目录一_Fmtfl 格式二width 格式三precision 格式四sync_with_stdio函数ios_base类是输入输出流的一个基础类。The classios_baseis a multipurpose class that serves as the base class for all I/O stream classes.一_Fmtfl 格式这个成员的每一位都用来控制流的一个属性初始化_Fmtfl skipws | dec; 初始值是513读取flags()替换flags(fmtflags _Newfmtflags)加格式setf(fmtflags _Newfmtflags)在给定的mask内设置格式setf(fmtflags _Newfmtflags, fmtflags _Mask)相关库函数_NODISCARD fmtflags __CLR_OR_THIS_CALL flags() const { return _Fmtfl; } fmtflags __CLR_OR_THIS_CALL flags(fmtflags _Newfmtflags) { // set format flags to argument const fmtflags _Oldfmtflags _Fmtfl; _Fmtfl _Newfmtflags _Fmtmask; return _Oldfmtflags; } fmtflags __CLR_OR_THIS_CALL setf(fmtflags _Newfmtflags) { // merge in format flags argument const ios_base::fmtflags _Oldfmtflags _Fmtfl; _Fmtfl | _Newfmtflags _Fmtmask; return _Oldfmtflags; } fmtflags __CLR_OR_THIS_CALL setf( fmtflags _Newfmtflags, fmtflags _Mask) { // merge in format flags argument under mask argument const ios_base::fmtflags _Oldfmtflags _Fmtfl; _Fmtfl (_Oldfmtflags ~_Mask) | (_Newfmtflags _Mask _Fmtmask); return _Oldfmtflags; } void __CLR_OR_THIS_CALL unsetf(fmtflags _Mask) { // clear format flags under mask argument _Fmtfl ~_Mask; }示例int main() { cout cout.flags() endl; cout.setf(ios::unitbuf); cout cout.flags() endl; cout.unsetf(ios::unitbuf); cout cout.flags() endl; return 0; }输出513515513其中ios::unitbuf是常数2其他的 _Fmtfl 格式二width 格式width用来控制整数输出的宽度即占几个字符相关库函数_NODISCARD streamsize __CLR_OR_THIS_CALL width() const { return _Wide; } streamsize __CLR_OR_THIS_CALL width(streamsize _Newwidth) { // set width to argument const streamsize _Oldwidth _Wide; _Wide _Newwidth; return _Oldwidth; }示例int main() { for (int i 0; i 100; i) { if (i % 10 0)cout endl; cout.width(3); cout i; } return 0; }三precision 格式precision用来控制浮点数的输出精度相关库函数_NODISCARD streamsize __CLR_OR_THIS_CALL precision() const { return _Prec; } streamsize __CLR_OR_THIS_CALL precision(streamsize _Newprecision) { // set precision to argument const streamsize _Oldprecision _Prec; _Prec _Newprecision; return _Oldprecision; }示例int main() { cout.precision(3); cout 1.414213562; return 0; }输出1.41四sync_with_stdio函数Sets whether the standard C streams are synchronized to the standard C streams after each input/output operation.相关库函数static bool __CLRCALL_OR_CDECL sync_with_stdio( bool _Newsync true) { // set C/C synchronization flag from argument _BEGIN_LOCK(_LOCK_STREAM) // lock thread to ensure atomicity const bool _Oldsync _Sync; _Sync _Newsync; return _Oldsync; _END_LOCK() }其中_Sync是私有静态成员__PURE_APPDOMAIN_GLOBAL static bool _Sync;这表明所有的流共享一个_Sync成员。