- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C的cin、cout高阶格式化操作
C++的cin、cout高阶格式化操作
这篇文章主要讲解如何在C++中使用cin/cout进行高级的格式化输出操作,包括数字的
各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,
仅使用cin/cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步
而言,您还可以在、上使用这些格式化操作,从而代替sscanf/sprintf和fscanf/fprintf
函数。为方便描述,下文仅以cin/cout为例进行介绍。
一、综述
cin/cout是STL库提供的一个iostream实例,拥有ios_base基类的全部函数和成员数据。
进行格式化操作可以直接利用setf/unsetf函数和flags函数。cin/cout维护一个当前的格式
状态,setf/unsetf函数是在当前的格式状态上追加或删除指定的格式,而flags则是将当前
格式状态全部替换为指定的格式。cin/cout为这两个函数提供了如下参数(可选格式):
ios::dec 以10进制表示整数
ios::hex 以16进制表示整数
ios::oct 以8进制表示整数
ios::showbase 为整数添加一个表示其进制的前缀
ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
ios::left 在串的末尾插入填充字符以使串居左对齐
ios::right 在串的前面插入填充字符以使串居右对齐
ios::boolalpha 将bool类型的值以true或flase表示,而不是1或0
ios::fixed 将符点数按照普通定点格式处理(非科学计数法)
ios::scientific 将符点数按照科学计数法处理(带指数域)
ios::showpoint 在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整
数不显示小数点)
ios::showpos 强制在正数前添加+号
ios::skipws 忽略前导的空格(主要用于输入流,如cin)
ios::unitbuf 在插入(每次输出)操作后清空缓存
ios::uppercase 强制大写字母
以上每一种格式都占用独立的一位,因此可以用“|”(位或)运算符组合使用。调用
setf/unsetf或flags设置格式一般按如下方式进行:
1 cout.setf(ios::right | ios::hex); //设置16进制右对齐
2 cout.setf(ios::right, ios::adjustfield); //取消其它对齐,设置为右对齐
setf可接受一个或两个参数,一个参数的版本为设置指定的格式,两个参数的版本中,
后一个参数指定了删除的格式。三个已定义的组合格式为:
ios::adjustfield 对齐格式的组合位
ios::basefield 进制的组合位
ios::floatfield 浮点表示方式的组合位
设置格式之后,下面所有使用cout进行的输出都会按照指定的格式状态执行。但是如果
在一次输出过程中需要混杂多种格式,使用cout的成员函数来处理就显得很不方便了。STL
另提供了一套库可以满足这种使用方式。库中将每一种格式的设置和删除都进行了函数级的
同名封装,比如fixed函数,就可以将一个ostream的对象作为参数,在内部调用setf函数对
其设置ios::fixed格式后再返回原对象。此外还提供了setiosflags、setbase、setfill、
setw、setprecision等方便的格式控制函数,下文会逐一进行介绍。大多数示例代码都会使
用到,因此默认包含的头文件均为:
1 #include
2 #include
二、缩进
将输出内容按指定的宽度对齐,需要用到ios::right、ios::left、ios::internal和
iomanip里的setw。其中setw用于指定要输出内容的对齐宽度。以下两段代码的结果完全相
同,前面是一个浮点数-456.98,后面紧跟着一个字符串“The End”以及换行符“endl”。
代码一:
01 #include
02 #include
03 using namespace std;
04 int main(void) {
05
您可能关注的文档
- 20、打鸭子.doc
- 4.2一元二次方程的解法因式分解法.ppt
- 2017优化方案高考总复习政治(新课标)课件:必修4第三单元第九课唯物辩证法的实质与核心[来源:学优网5076480].ppt
- 2017优化方案高考总复习政治(新课标)课件:必修4第二单元第四课探究世界的本质[来源:学优网5199360].ppt
- 2017优化方案高考总复习政治(新课标)课件:必修2第二单元第四课我国政府受人民的监督[来源:学优网3963904].ppt
- 19、捕鱼.doc
- 第11章反比例函数复习课.ppt
- 2017优化方案高考总复习政治(新课标)课件:必修4第二单元第六课求索真理的历程[来源:学优网4692992].ppt
- C++_vector类.pdf
- 2420世纪以来的重大思想理论成果.doc
文档评论(0)