C++格式输入输出

简介: 🐰C++格式输入输出🏡用流对象的成员函数控制输入输出格式🌸1.控制格式的标志位🌸2.使用成员函数设置标志字🌸3.使用成员函数设置域宽、填充字节、精度🏡用控制符控制输入输出格式

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰C++格式输入输出

🏡用流对象的成员函数控制输入输出格式

🌸1.控制格式的标志位

🌸2.使用成员函数设置标志字

🌸3.使用成员函数设置域宽、填充字节、精度

🏡用控制符控制输入输出格式


🐰C++格式输入输出

🏡用流对象的成员函数控制输入输出格式

🌸1.控制格式的标志位

在ios类中声明了数据成员x_flags(声明语句:long x_flags;),它存储控制输入输出格式的状态标志,每个状态标志占一位。状态标志的值只能是ios类中定义的枚举量.

例如:

ADBC168B-0ECB-4AC9-BC09-B6397DC4D466.jpeg

 

如果设置了某个状态标志,则x_flags中对应位为1,否则为0.这些状态标志之间是或的关系,可以标志并存

🌸2.使用成员函数设置标志字

ios类中定义了数据成员x_flags来记录当前格式化的状态,即各标志位的设置值,这个数据成员被称为标志字。格式标志在类ios中被定义为枚举值,因此在引用这些格式标志时要在前面加上类名ios和域运算符"::"。设置这个标志字的成员函数为setf,其调用格式如下:

stream_obj.setf(ios::标志位名);

这里,stream_obj是要设置格式标志的流对象,常用的是cin和cout。要设置多个标志时,使用位运算符'|'

cout.setf(ios::dec|ios::scientific);

(1)清除状态标志。

unsetf函数用来清除一个状态标志,即指定的状态标志位为0,

stream_obj.unsetf(ios::标志位名);

(2)取消标志状态值。flags函数用来取当前状态标志。

有两种方法:

1. stream_obj.flags();
2. stream_obj.flags(ios::标志位名);

不带参数的函数是返回与流相关的当前状态标志值。带参数的函数是把状态标志值设置为标志位名指定的值,并返回设置前的状态标志值。

注意:函数setf是在原有的基础上追加设定,而flags函数是用新值覆盖以前的值。

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     cout.flags(ios::oct);
6.     cout<<"OCT:1010="<<1010<<endl;//1010的8进制形式
7.     cout.flags(ios::dec);
8.     cout<<"DEC:1010="<<1010<<endl;//1010的10进制形式
9.     cout.flags(ios::hex);
10.     cout<<"HEX:1010="<<1010<<endl;//1010的16进制形式
11.     cout.flags(ios::uppercase|ios::hex);
12.     cout<<"UPPERCASE:1010="<<1010<<endl;//1010的16进制且大写的形式
13.     cout.unsetf(ios::hex);//清除标志字
14.     cout<<1010<<endl;
15.     return 0;
16. }
17. 结果:
18. OCT:1010=1762
19. DEC:1010=1010
20. HEX:1010=3f2
21. UPPERCASE:1010=3F2
22. 1010

🌸3.使用成员函数设置域宽、填充字节、精度

在ios类中,除了提供了操作状态标志的成员函数外,还提供了设置域宽、填充字节、精度的成员函数来对输出进行格式化

(1)设置域宽的成员函数width

有两种形式:

【1】int width()//该函数用来返回当前输出数据时的宽度

【2】in width(int wid)//该函数用来设置当前输出数据的宽度为wid,并返回更新前的宽度值

注意:如果输出宽度没有设置,那么默认情况下为数据所占最少字符数。所设置的域宽仅对下一个输出流有效,当一次输出完成后,域宽恢复为0

(2)设置填充字符的成员函数fill

有两种形式:

【1】char fill()//该函数用来返回当前所使用的填充字符

【2】char fill(char c)//带参数的fill函数用来设置填充字符为参数c字符,并返回更新之前的填充字符

注意:如果填充字符省略,那么默认填充字符为空格符。如果设置的数据宽度小于数据所需要的最少字符,则数据宽度默认宽度处理。

(3)设置浮点数输出精度的成员函数precision

有两种形式:

【1】int precision()//该函数返回当前浮点数的有效数字的个数

【2】int precision(int n)//该函数设置浮点数输出时的有效数字个数,并返回更新前的值

注意:float实数最多提供7有效数字,double型实数最多提供15位有效数字,long double型实数最多提供19位有效数字

1. #include<iostream>
2. using namespace std;
3. int main()
4. {
5.     cout<<"5201314"<<endl;
6.     cout<<"Default width:"<<cout.width()<<endl;
7.     cout.width(12);
8.     cout<<520<<endl;
9.     cout<<"Default fill:"<<cout.fill()<<endl;
10.     cout.width(12);
11.     cout.fill('#');
12.     cout<<"Default precision:"<<cout.precision()<<endl;
13.     cout.precision(5);
14.     cout<<3.1415926<<endl;
15.     return 0;
16. }
17. 结果:
18. 5201314
19. Default width:0
20.          520
21. Default fill:
22. Default precision:6
23. 3.1416(如果域宽不够,就会四舍五入)

🏡用控制符控制输入输出格式

使用ios类的成员函数来控制输入或输出格式时,必须有流对象来进行调试,使用不方便。我们可以使用特殊的、类似于函数的控制符来进行控制。控制符可以直接嵌入到输入或输出操作的语句中。控制符如下

6FDE513D-49E1-4069-B1EA-06DF6D0643A8.jpeg

 

这些控制符是在iomanip中定义的,因此如果在程序中使用这些控制符必须把头文件iomanip包含进来。

1. #include<iostream>
2. #include<iomanip>
3. using namespace std;
4. int main()
5. {
6.     cout<<"DEC:"<<dec<<1010<<endl;
7.     cout<<"HEX:"<<hex<<1010<<endl;
8.     cout<<"OCT:"<<oct<<1010<<endl;
9.     cout<<"OCT:"<<setbase(8)<<1010<<endl;//setbase(n)设置的格式(0,8,10,16)默认值为0
10.     cout<<setw(15)<<"hello world!"<<endl;
11.     return 0;
12. }
13. 结果:
14. DEC:1010
15. HEX:3f2
16. OCT:1762
17. OCT:1762
18.    hello world!

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸

相关文章
|
6月前
|
存储 JSON 数据库
【C++ 软件设计思路】跨平台应用开发:如何选择合适的格式保存信息
【C++ 软件设计思路】跨平台应用开发:如何选择合适的格式保存信息
171 0
|
6月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
92 0
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
|
9天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
31 4
|
6月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
76 0
|
6月前
|
存储 传感器 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C++)
178 0
|
6月前
|
存储 安全 Linux
C++文件格式深度解析:从底层结构到关键特性
C++文件格式深度解析:从底层结构到关键特性
419 3
C++文件格式深度解析:从底层结构到关键特性
|
6月前
|
C++
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
64 0
|
6月前
|
机器学习/深度学习 C++ iOS开发
C++中的格式控制
C++中的格式控制
|
存储 传感器 算法
Baumer工业相机堡盟工业相机如何通过BGAPISDK的函数转换示Bayer格式为BGR8格式彩色图像(C++)
Baumer工业相机堡盟工业相机如何通过BGAPISDK的函数转换示Bayer格式为BGR8格式彩色图像(C++)
213 0
|
6月前
|
存储 C语言 C++
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
128 1