C++基本输出控制
作者:互联网
标准输出流(cout)
C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。
C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
头文件 | 函数及描述 |
---|---|
<iostream> | 该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。 |
<iomanip> | 该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务 |
<fstream> | 该文件为用户控制的文件处理声明服务。 |
如何利用这些文件控制输出
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double num = 1234.56789;
cout << "1234.56789" << endl;
cout << num << endl;
cout << "after setting :" << endl;
return 0;
}
运行截图:
结论: cout 会对浮点数自动的四舍五入保留两位有效小数
- 要想保留后面的小数, 我们需要调用 <iomanip> 中的 setiosflags(ios::fixed) 固定的浮点显示
int main(){
double num = 1234.56789;
cout << "1234.56789" << endl;
cout << num << endl;
cout << "after setting :" << endl;
cout << setiosflags(ios::fixed)<<num << endl;
return 0;
}
运行截图:
与之相当的是 cout.setf()
- 具体用法:
cout.setf(ios::fixed);
cout << num << endl;
运行截图:
利用cout.precious()如何用来设置有效位数;
int main(){
double num = 1234.56789;
cout << "1234.56789" << endl;
cout << num << endl;
cout << "after setting :" << endl;
cout.precision(3);
cout << num << endl;
return 0;
}
运行截图:
cout.precision(7);
cout << num << endl;
运行截图:
可以发现单独的使用cout.precision() 可以控制输出的有效数字;
- cout.precision() 与 setprecision() 效果相当;
cout << setprecision(3)<<num << endl;
运行截图:
精确到小数点后某位.
- 我们可以利用 cout.setf(ios::fixed) 和 cout.precision() 来做到控制输出.
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double num = 1234.56789;
cout << "1234.56789" << endl;
cout << num << endl;
cout << "after setting :" << endl;
cout.precision(3);
cout.setf(ios::fixed);
cout << num << endl;
return 0;
}
运行截图:
- 使用完毕后想关闭设置,可以调用cout.unsetf()
- 关闭有效数位可以将有效数位设置位 -1 ;
cout.unsetf(ios::fixed);
cout.precision(-1);
cout << "after unsetf :" << endl;
cout << num << endl;
运行截图 :
当然关于cout的输出控制还有许多,这里不一 一举例,大致用法相同,其中
cout.setf 跟 setiosflags 功能一样,cout.precision 跟 setprecision 功能一样,cout.unsetf 跟 resetiosflags 功能一致;
- cout.setf常见的标志
cout.setf(ios::fixed) | 功能 |
---|---|
boolalpha | 可以使用单词”true”和”false”进行输入/输出的布尔值. |
oct | 用八进制格式显示数值. |
dec | 用十进制格式显示数值. |
hex | 用十六进制格式显示数值. |
left | 输出调整为左对齐. |
right | 输出调整为右对齐. |
scientific | 用科学记数法显示浮点数. |
fixed | 用正常的记数方法显示浮点数(与科学计数法相对应). |
showbase | 输出时显示所有数值的基数. |
showpoint | 显示小数点和额外的零,即使不需要. |
showpos | 在非负数值前面显示”+(正号)”. |
skipws | 当从一个流进行读取时,跳过空白字符(spaces, tabs, newlines). |
unitbuf | 在每次插入以后,清空缓冲区. |
internal | 将填充字符回到符号和数值之间. |
uppercase | 以大写的形式显示科学记数法中的”e”和十六进制格式的”x”. |
- setiosflags 常见用法
setiosflags | 功能 |
---|---|
setiosflags(ios::fixed) | 固定的浮点显示 |
setiosflags(ios::scientific) | 指数表示 |
setiosflags(ios::left) | 左对齐 |
setiosflags(ios::right) | 右对齐 |
setiosflags(ios::skipws) | 忽略前导空白 |
setiosflags(ios::uppercase) | 16进制数大写输出 |
setiosflags(ios::lowercase) | 16进制小写输出 |
setiosflags(ios::showpoint) | 强制显示小数点 |
setiosflags(ios::showpos) | 强制显示符号 |
求点赞, 求关注, 让我们一起进步, CSDN的伙伴们加油, 奥力给 !
标签:输出,截图,cout,setiosflags,ios,C++,控制,fixed 来源: https://blog.csdn.net/OnlyFeiger/article/details/113835613