/** Prints out the column string at the given row index. * * @param s :: stream to output * @param index :: row index */ void PeakColumn::print(size_t index, std::ostream &s) const { Peak &peak = m_peaks[index]; s.imbue(std::locale("C")); std::ios::fmtflags fflags(s.flags()); if (m_name == "RunNumber") s << peak.getRunNumber(); else if (m_name == "DetID") s << peak.getDetectorID(); else if (m_name == "BankName") s << peak.getBankName(); else if (m_name == "QLab") s << peak.getQLabFrame(); else if (m_name == "QSample") s << peak.getQSampleFrame(); else if (m_name == "h") { s << std::fixed << std::setprecision(m_hklPrec) << peak.getH(); } else if (m_name == "k") { s << std::fixed << std::setprecision(m_hklPrec) << peak.getK(); } else if (m_name == "l") { s << std::fixed << std::setprecision(m_hklPrec) << peak.getL(); } else if (m_name == "PeakNumber") { s << peak.getPeakNumber(); } else s << peak.getValueByColName(m_name); s.flags(fflags); }
void float2string(std::ostream& os, float value) { #ifdef SEXP_USE_CXX17 constexpr size_t len = std::numeric_limits<float>::digits10 + 1; char buffer[len]; auto result = std::to_chars(buffer, buffer + len, value); assert(result.ec == std::errc()); os.write(buffer, result.ptr - buffer); #else auto precision = os.precision(std::numeric_limits<float>::digits10 + 1); # ifdef SEXP_USE_LOCALE const auto& loc = os.getloc(); os.imbue(std::locale::classic()); os << value; os.imbue(loc); # else os << value; # endif os.precision(precision); #endif }
bool CConfigurationFile::CXML::save(std::ostream & os, const std::string & relativeTo) { mPWD = relativeTo; os.imbue(std::locale::classic()); os.precision(16); mpOstream = &os; *mpOstream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl; *mpOstream << "<!-- generated with COPASI " << CVersion::VERSION.getVersion() << " (http://www.copasi.org) at " << UTCTimeStamp() << " UTC -->" << std::endl; saveParameter(mConfiguration); return true; }
// Save, change, and restore stream properties void saver_tests_1 ( std::istream & input, std::ostream & output, std::ostream & err ) { using std::locale; using std::ios_base; using std::setw; boost::io::ios_flags_saver const ifls( output ); boost::io::ios_precision_saver const iprs( output ); boost::io::ios_width_saver const iws( output ); boost::io::ios_tie_saver const its( input ); boost::io::ios_rdbuf_saver const irs( output ); boost::io::ios_fill_saver const ifis( output ); boost::io::ios_locale_saver const ils( output ); boost::io::ios_iword_saver const iis( output, my_index ); boost::io::ios_pword_saver const ipws( output, my_index ); locale loc( locale::classic(), new backward_bool_names ); input.tie( &err ); output.rdbuf( err.rdbuf() ); output.iword( my_index ) = 69L; output.pword( my_index ) = &err; output << "The data is (again):\n"; output.setf( ios_base::showpos | ios_base::boolalpha ); output.setf( ios_base::internal, ios_base::adjustfield ); output.fill( '@' ); output.precision( 9 ); output << '\t' << test_string << '\n'; output << '\t' << setw( 10 ) << test_num1 << '\n'; output << '\t' << setw( 15 ) << test_num2 << '\n'; output.imbue( loc ); output << '\t' << test_bool << '\n'; BOOST_CHECK( &err == output.pword(my_index) ); BOOST_CHECK( 69L == output.iword(my_index) ); try { boost::io::ios_exception_saver const ies( output ); boost::io::ios_iostate_saver const iis( output ); output.exceptions( ios_base::eofbit ); output.setstate( ios_base::eofbit ); BOOST_ERROR( "previous line should have thrown" ); } catch ( ios_base::failure &f ) { err << "Got the expected I/O failure: \"" << f.what() << "\".\n"; BOOST_CHECK( output.exceptions() == ios_base::goodbit ); } catch ( ... ) { err << "Got an unknown error when doing exception test!\n"; throw; } }