【C++】格式化输入输出 【总结】【持续补充】

发布于:2024-04-18 ⋅ 阅读:(30) ⋅ 点赞:(0)

输出

1.默认浮点输出6位,自动四舍五入

cout << 0.123456789 << endl;//0.123457
cout << 3.123456789 << endl;//3.12346

头文件#include<iomanip>

2.保留小数位数

流操作符:fixed 

作用范围:之后所有,四舍五入

cout << fixed << setprecision(4);	
float big = 12345;
cout  << big << endl;// 12345.0000
float middle = 1.2345;	
cout << middle << endl;// 1.2345
float mini = 0.12345;
cout << mini << endl;//0.1235

3.保留有效位数(整数位数+小数位数)

输出控制符:setprecision

输出形式:小数

作用范围:到下一个setprecision


float big = 12345;
cout << big <<" after " << setprecision(4) << big << endl;
//12345 after 1.234e+04
float middle = 1.2345;	
cout << middle <<" after " << setprecision(4) << middle << endl;
//1.2345 after 1.235
float mini = 0.12345;
cout << mini <<" after " << setprecision(4) << mini << endl;
//0.12345 after 0.1235

4.宽度与填充

设置宽度:setw

作用范围:仅对后续<<生效

注意:小数点也算一个宽度,若setw(n)后接的数值宽度大于n,则会全部输出

填充字符:setfill

默认:空格

int a=1;
cout << setw(5) << setfill('0') << a;
//00001

5. 向下取整,向上取整,四舍五入

int a=3.5;
cout<<ceil(a)<<endl;   //向上取整
cout<<(a>(int)a?(int)a+1:(int)a)<<endl;
//4
cout<<floor(a)<<endl;   //向下取整
cout<<(int)a<<endl;
//3
cout<<round(a)<<endl;   //四舍五入
cout<<(int)(a+0.5)<<endl;
//4

6.setiosflags

1.设置精度固定

作用范围:后面所有(直到下一个设置精度固定)

注意:当只用setprecision设置精度只能是保留小数位数,不能输出小数点后多余的零,但是和setiosflags合用则可以输出

cout<<setprecision(8)<<setiosflags(ios::fixed);  //设置小数点后精度为8位 设置精度固定

2.左右对齐:

作用范围:直到下一个设置对齐

cout<<setiosflags(ios::right);  //设置数据右对齐

3.有无小数点显示

setiosflags(ios::fixed|ios::showpoint)

当setprecision( )的精度为0的时候,有showpoint,结果就会显示小数点,没showpoint,就不显示小数点

输入

1.cin

cin忽略空格和换行符

只能输入没有空格的字符串,当输入中含有空格,则只能输出空格之前的字符

2.cin.get()

可以接收空格,遇回车结束输入

char a[50];
cin.get(a,50);

3.cin.getline()

同cin.get()函数类似,也可接收空格,遇回车结束输入

char a[50];
cin.getline(a,50);

4.string getline

若定义变量为string类型,则要考虑getline()函数

注意:输入两次回车才能结束输入

#include <string>
string a;
getline(cin,a);