setf
语法:
fmtflags setf( fmtflags flags ); fmtflags setf( fmtflags flags, fmtflags needed ); |
函数setf()设置当前流的格式化标志为flags。可选标志needed 只允许flags标志和needed标志都被设置。返回值是前面设置的标志。
1. 使用方法一 fmtflags setf (fmtflags )
语法 | 功能 |
ios_base::boolalpha | 输入和输出bool值,可以为true或false |
ios_base::showbse | 对于输出,使用C++基数前缀(0,0x) |
ios_base::showpoint | 显示末尾的小数点 |
ios_base::uppercase | 对于16进制输出,使用大写字母E表示法 |
ios_base:;showpos | 在正数前面加上+ |
Tips:
这些格式常量都是在ios_base类中定义的,因此使用时,必须加上作用域解析操作符。如果不想使用using编译指令或using声明,可以使用作用域操作符来指出这些名称位于名称空间std中,即std::ios_base。
位格式常量一旦修改一直有效,直到被覆盖为止。(在头文件iostream。h中使用的是ios类而不是ios_base类)
例如:
int number = 10 ;
cout.setf (ios:: showpos);
cout << number << endl;
输出:
+10
2. 使用方法二fmtflags setf (fmtflags, fmtflags )
第二参数 | 第一参数 | 含义 |
ios::basefield | ios::hex | 使用基数16 |
ios::oct | 使用基数8 | |
ios::dec | 使用基数10 | |
ios::floatfield | ios::fixed | 使用定点计数法 |
ios::scientific | 使用科学计数法 | |
ios:: adjustfield | ios ::left | 使用左对齐 |
ios ::right | 使用右对齐 | |
ios ::internal | 符号或基数前缀左侧对齐,值右侧对齐 |
例如:
intnumber = 0x3FF;
cout.setf( ios::dec,ios_base :: basefield);
cout << "Decimal: " <<number << endl;
cout.unsetf( ios::dec ,ios_base :: basefield);
cout.setf( ios::hex );
cout << "Hexadecimal: " << number << endl;
输出 :
Decimal : 63
Hexadecimal :3f