C++输出格式控制 (VS2017)
程序员文章站
2022-03-28 20:21:51
...
常用的流操纵算子
直接上代码:
#include<iostream>
//流操纵算子的头文件
#include<iomanip>
#include<stdlib.h>
using namespace std;
int main()
{
int t = 456;
int n = 12;
//测试进制控制
//十进制输出
cout << dec << n << endl;
system("pause");
//八进制
cout << oct << n << endl;
system("pause");
//十六进制
cout << hex << n << endl;
system("pause");
//自定义进制
cout <<setbase(2)<< n << endl;//这里应该输出的是1100,但是我的VS2017输出的是12....在菜鸟工具上的输出也是12.。。。
system("pause");
//进制控制是连续起作用的
cout << n << endl;
system("pause");
//设置回十进制
cout << dec;
/*
现在开始测试用流操纵算子
控制浮点数精度
*/
double d2 = 11245.256433;
double de = 126.45678910;
//默认情况下的输出
cout << de << endl;
system("pause");
//用控制小数点后的位数的方式控制精度
cout << fixed << setprecision(3) << de << endl;
system("pause");
//或者cout<<steiosflags(ios::fixed)<<setprecision(3)<<n<<endl;
//用控制有效数字的方式控制精度(也就是用科学计数法)
cout << scientific << setprecision(2) << d2 << endl;
system("pause");
/*
现在测试宽度的控制
*/
int kw = 1234567;
//设置宽度为6,小于kw的位数,无效
cout << setw(6) << kw << endl;
system("pause");
//设置宽度为50
cout << setw(50) << kw << endl;
system("pause");
//因为只有一次 的效果
cout << kw << endl;
system("pause");
/*
现在测试填充的控制
*/
//设置填充的时候要想设置一个合适的宽度,否则无效
int tian = 12;
//不先设置宽度
cout << setfill('*') << tian << endl;
system("pause");
//设置宽度后设置填充字符,
//这个标记不是一次性的,在设置其他的填充字符之前,一直有效
cout << setw(20) << tian << endl; system("pause");
//设置其他的填充字符
cout << setw(20) << setfill('$') << tian << endl; system("pause");
//恢复默认字符
cout << setw(20)<<setfill(' ') << tian << endl;
system("pause");
/*
现在测试对齐控制
*/
int dui = 45;
//默认对齐方式
cout << setw(20) << dui << endl; system("pause");
//设置为左对齐
cout << setiosflags(ios::left) << setw(20) << dui << endl; system("pause");
//对齐的设置是连续作用的
cout << setw(20) << dui << endl; system("pause");
//设置为右对齐的两种方式
cout << resetiosflags(ios::left) << setw(20) << dui << endl; system("pause");
cout << right << setw(20) << dui << endl; system("pause");
/*
自定义流操纵算子
规定格式
ostream& 函数名(ostream& output)
{
*****
return **;
}
例子:
ostream& tab(ostream& out)
{
return out<<'\t';
}
用的时候,cout<<78<<tab<<45<<endl;
为什么可以自定义流操纵算子?
因为 iostream 里对 << 进行了重载(成员函数)
ostream & operator
<<( ostream & ( * p ) ( ostream & ) ) ;
该函数内部会调用p所指向的函数,且以 *this 作为参数
hex 、dec 、oct 都是函数
*/
}
输出:
综合实例:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n = 141;
//1) 分别以十六进制、十进制、八进制先后输出 n
cout << "1) " << hex << n << " " << dec << n << " " << oct << n << endl;
double x = 1234567.89, y = 12.34567;
//2) 保留5位有效数字
cout << "2) " << setprecision(5) << x << " " << y << " " << endl;
//3) 保留小数点后面5位
cout << "3) " << fixed << setprecision(5) << x << " " << y << endl;
//4) 科学计数法输出,且保留小数点后面5位
cout << "4) " << scientific << setprecision(5) << x << " " << y << endl;
//5) 非负数要显示正号,输出宽度为12字符,宽度不足则用'*'填补
cout << "5) " << showpos << fixed << setw(12) << setfill('*') << 12.1
<< endl;
//6) 非负数不显示正号,输出宽度为12字符,宽度不足则右边用填充字符填充
cout << "6) " << noshowpos << setw(12) << left << 12.1 << endl;
//7) 输出宽度为12字符,宽度不足则左边用填充字符填充
cout << "7) " << setw(12) << right << 12.1 << endl;
//8) 宽度不足时,负号和数值分列左右,中间用填充字符填充
cout << "8) " << setw(12) << internal << -12.1 << endl;
cout << "9) " << 12.1 << endl;
return 0;
}
输出:
)
参考资料:
上一篇: 在vs2017中通过CMake 配置ffmpeg 环境
下一篇: vs2017 C#调用cplex
推荐阅读
-
C++格式化输出
-
C/C++格式化输出(printf、fprintf、sprintf、syslog等)的不安全用法
-
【C++ 语言】C++字符串 ( string 类 | 创建方法 | 控制台输出 | 字符串操作 | 栈内存字符串对象 | string* )
-
十六进制转十进制:利用输出格式控制进行进制转换
-
格式化输出函数printf( )的格式控制说明
-
c语言 printf 输出格式控制 %#x 带0x 16进制的输出
-
Hadoop--MapReduce6--控制输入输出格式
-
day2(字符串、格式化输出、运算符、流程控制)
-
C++中读取控制台输出,并将文件指针FILE*转换为istream
-
C++中读取控制台输出,并将文件指针FILE*转换为istream