C++中cout格式化输出的相关函数与控制符
来源:互联网 发布:东莞知美医院可靠吗 编辑:程序博客网 时间:2024/06/18 13:30
cout<<
- <<为插入运算符,重载后可识别C++中的所有基本类型(unsigned signed char short int long float double以及组合)
ostream& operator<<(type);
- 通过看上面的函数原型。由于返回输出运算符引用,即cout。可实现拼接(一行中多次输出)
char name[10] = "hello";char* p = name;cout<<"hello"<<name<<p;//三种方式输出都是hellocout<<(void*)p;//输出p所指向的字符串的地址cout << *p; //输出h字符
put()与write()
- put用来显示字符,write用来显示字符串
ostream & put(char)
cout.put('W').put('t');//输出W和t,可以拼接cout.put(65).put(65.5);//double值65.5和int值65转换成char值65,显示其ASCII码为65的字符A
basic_ostream<charT,traits>& write(const char_type* s,streamsize n);
- 第一个参数提供要显示的字符的地址;
- 第二个参数指出要显示多少个字符。
- 使用cout调用时,会让模板调用char具体化,返回ostream&,即cout。
char* name = "hello";cout.write(name,3);//将输出hel3个字符cout.write(name,10);//将把内存中hello后面的数据输出,直到输出10个字符long val = 48;cout.write(val,1);//由于计算机为小端,输出第8位所对应的字符(ASCII中48对应字符为0)cout.write(val,2);//第二个参数为2或更大时会出现乱码
刷新输出缓冲区
flush(cout);//#1cout<<flush;//#2cout<<endl;//#3
- 缓冲区为512字节或其整数倍,写满时将自动刷新输出缓冲区;
- 程序结束时将刷新缓冲区;
- 有输入(cin)时,将刷新缓冲区(将cin上面的cout全部输出);
- 遇到flush(上面的#1和#2)时,刷新缓冲区(由于<<运算符重载,#2将被替换成#1)
- 遇到endl(#3)时,刷新缓冲区,并插入一个换行符
用cout格式化
修改显示时用的计数系统
hex(cout);//十六进制cout<<hex;//同上等价dec(cout);//decimal,十进制(默认)cout<<dec;//同上等价oct(cout);//octal,八进制cout<<oct;//同上等价
调整字符宽度
int width();int width(int i);
- 将字段宽度设置为i个空格(没有参数就不设置);
- 返回修改前的字段宽度。
注意:- width()方法只影响接下来显示的一个项目,然后字段宽度被恢复为默认值(0)。
- C++永远不会截短数据。即,当i小于输出字段时,这个函数将不起作用,而且也算完成了一个项目,恢复默认值。
- 无法拼接
填充字符
cout.fill('*');
- 与width配套使用,参数可以使任意char字符。
- 与width不同的是,fill一直有效,直到被重新设置
设置浮点数的显示精度
cout.precision(2);
- C++默认精度为6位,小数点后的末尾0不显示。
- 浮点精度取决于输出模式:
- 默认模式——>指的是显示的总位数
- 定点模式——>指的是显示小数点后的位数
- 科学模式——>指的是显示小数点后的位数,指数和这个无关
setf函数与所对应的控制符
- 补充:
- fmtflags指的是要输入ios_base中的静态变量。
- ios_base派生ios;ios派生istream和ostream;istream和ostream派生iostream。
fmtflags setf(fmtflags);fmtflags setf(fmtflags,fmtflags);
- 第一个参数包含了所需设置的fmtflags值(每一位的0和1都表示一种状态的开关)
- 第二个参数指出要清除第一个参数中的哪些位(聪明的编译器会自动做)
- 例:
cout.setf(ios_base::showpoint);//打印小数点和末尾的0ios_base::fmtflags old=cout.setf(ios_base::left.ios_base::adjustfield);//放弃之前对齐方式,变成左对齐。并返回之前的状态。
- 由于setf时函数,所以不能用<<来实现。可以用控制符来实现相同的功能
cout<<showpoint;//与上面函数等价,而且可以拼接
相关表格
- setf(long)的参数
- setf(long, long)的参数
- 标准控制符与函数的对应
头文件iomanip
中的输出控制符
cout<<setprecision(2);//等价于cout.precision(2);cout<<setfill('*');//等价于cout.fill('*');cout<<setw(5);//等价于cout.width(5);
记住要加头文件<iomanip>
以上为控制符,可直接使用,可拼接!
阅读全文
0 0
- C++中cout格式化输出的相关函数与控制符
- C++中cout格式化输出的相关函数
- C/C++的格式化输出(2)--cout
- cout的格式化输出
- cout的格式化输出
- cout的格式化控制
- (C++)cout格式化输出示例
- (C++)cout格式化输出示例
- (C++)cout格式化输出示例
- C++中格式化cout输出
- [C++]cout输出精度控制
- c++的cout输出控制符
- C++中 cout的格式化输出(保留小数)
- cout输出的格式控制
- 关于C++的cout的格式化输出
- cout函数控制结果输出形式
- C++关于cout的格式化输出
- C语言中printf格式化输出函数
- QVTKOpenGLWidget
- 路漫漫其修远兮,吾将上下而求索
- log4j过滤掉不必要的日志
- nginx1.12安装
- OpenStack deployed by SaltStack
- C++中cout格式化输出的相关函数与控制符
- java学习心得
- 网络编程(二) TCP报头
- 雾计算与边缘计算
- linux内核系统调度
- 405. Convert a Number to Hexadecimal
- 深入浅出 Python Decorators
- LeetCode-561. Array Partition I-排序
- 让你的大疆在测绘领域物尽其用