std::ios_base::常见标志 |
使用意义 |
boolalpha |
可以使用单词"true"和"false"进行输入或者输出布尔值。 |
oct |
用八进制格式显示数值。(与ios::basefield配合使用) |
dec |
用十进制格式显示数值。(与ios::basefield配合使用) |
hex |
用十六进制格式表示数值。(与ios::basefield配合使用) |
left |
输出调整为左对齐。(与ios::adjustfield配合使用) |
right |
输出调整为右对齐。(与ios::adjustfield配合使用) |
scientific |
用科学计数法显示浮点数。(与ios::floatfield配合使用) |
fixed |
用正常的记数方法显示浮点数(与科学计数法对应)(与ios::floatfield配合使用) |
showbase |
输出时显示所有数值的基数。 |
showpos |
在非负数值前面显示正号。 |
unitbuf |
每次插入以后,清空缓冲区。 |
uppercase |
以大写的形式显示科学计数法中的'e'和十六进制格式的'x'。 |
cpp
复制代码
#include<iostream>
#include <fstream>
int main()
{
bool isFunc = false;
std::cout.setf(std::ios_base::boolalpha);
std::cout << isFunc << std::endl;
std::cout.unsetf(std::ios_base::boolalpha);
std::cout << isFunc << std::endl;
int num1 = 34;
std::cout.setf(std::ios_base::oct, std::ios_base::basefield);
std::cout << num1 << std::endl;
std::cout.unsetf(std::ios_base::oct);
std::cout << num1 << std::endl;
std::cout.setf(std::ios_base::dec, std::ios_base::basefield);
std::cout << num1 << std::endl;
std::cout.unsetf(std::ios_base::dec);
std::cout << num1 << std::endl;
std::cout.setf(std::ios_base::hex, std::ios_base::basefield);
std::cout << num1 << std::endl;
std::cout.unsetf(std::ios_base::hex);
std::cout << num1 << std::endl;
std::cout.setf(std::ios_base::left);
for (int i = 1; i <= 100; i *= 10)
{
std::cout.width(5);
std::cout << i << ":";
std::cout.width(8);
std::cout << i * i << std::endl;
}
std::cout.unsetf(std::ios_base::left);
std::cout.setf(std::ios_base::right);
for (int i = 1; i <= 100; i *= 10)
{
std::cout.width(5);
std::cout << i << ":";
std::cout.width(8);
std::cout << i * i << std::endl;
}
std::cout.unsetf(std::ios_base::right);
float num2 = 120.23f;
std::cout.setf(std::ios_base::scientific);
std::cout << num2 << std::endl;
std::cout.unsetf(std::ios_base::scientific);
float num3 = -2e4f;
std::cout.setf(std::ios_base::fixed);
std::cout << num3 << std::endl;
std::cout.unsetf(std::ios_base::fixed);
std::cout.setf(std::ios_base::showbase);
std::cout << num2 << " " << num3 << std::endl;
std::cout.unsetf(std::ios_base::showbase);
std::cout.precision(3);
std::cout.setf(std::ios_base::showpoint);
std::cout << num2 << " " << num3 << std::endl;
std::cout.unsetf(std::ios_base::showbase);
std::cout << std::defaultfloat;
std::cout.setf(std::ios_base::showpos);
std::cout << num2 << " " << num3 << std::endl;
std::cout.setf(std::ios_base::showpos);
std::cout.setf(std::ios_base::unitbuf);
std::cout.unsetf(std::ios_base::unitbuf);
return 0;
}
text
复制代码
false
0
42
34
34
34
22
34
1 :1
10 :100
100 :10000
1: 1
10: 100
100: 10000
1.202300e+02
-20000.000000
120.23 -20000
120. -2.00e+04
+120. -2.00e+04