《C++ Primer Plus(第六版)》(38)(第十七章 输入、输出和文件 笔记1)

1.流充当了程序和流源和流目标之间的桥梁。

C++只检查字节流,而不需知道字节来自何方。

C++没有将输入输出建立在语言中,而是让编译器实现的。


2.使用缓冲区可以更高效地处理输入和输出。


3.streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法。

ios_base类表示流的一般特征,如是否可读取,是二进制流还是文本流等。包含一些非模板的性质。

ios类基于ios_base,其中包括了一个指向streambuf对象的指针成员。包含的是模板的性质。

ostream类从ios类派生而来的,提供了输出方法。

istream类从ios类派生而来,提供了输入方法。

iostream类基于istream和ostream类的,继承了输入输出方法。


4.ostream类最重要的任务之一是将数值类型转换成以文本形式表示的字节流。


5.对于非char的指针,cout将其对应于void*,并打印地址


6.cout还有put(),用来输出一个字符,write()用来输出一个字符串,遇到null也不会停止。


7.cout <<flush可以强行刷新输出缓冲区。

flush(cout);也可以


8.dec/hex/oct用来设置十进制,十六进制,和八进制。

cout << hex;

oct(cout);


9.width()调整字段宽度,默认是右对齐的。

cout.width(12);

设置下一个输出的字段是12位。是成员函数,只对下一次输出有效。

如果碰到输出的实际长度是大于宽度,将显示全部,自动扩展。

默认宽度是0,所以能够显示所有的长度。


10.填充字符

cout.fill('*');

在字段中未使用的部分填充*号。要和width一起使用的。


11.设置浮点数显示精度

cout.precision(2);

设置显示2位有效数字

默认是6位有效数字。


12.设置标记

打印末尾0和小数点

cout.setf(ios_base::showpoint);

setf是用来设置一系列的标记的。

常量含义
ios_base::boolalpha输入和输出的bool值,可以为true或false
ios_base::showbase对于输出,使用C++基数前缀(0.0x)
ios_base::showpoint显示末尾小数点
ios_base::uppercase对于16进制输出,使用大写字母,E表示法
ios_base::showpos在正数前面加上+
仅当基数为10的时候才可以显示+,C++将8进制和16进制都看做无符号的。

setf还有一个函数原型。

fmtflags set(fmtflags, fmtflags);

--------------------------------------------------------------------------------------------------------------

第二个参数                                 第一个参数                                      含义

ios_base::basefield                ios_base::dec                                 使用基数10

                                                    ios_base::oct                                   使用基数8

                                                    ios_base::hex                                  使用基数16

ios_base::floatfield                 ios_base::fixed                                 使用定点计数法

                                                    ios_base::scientific                         使用科学计数法

ios_base::adjustfield              ios_base::left                                    左对齐

                                                     ios_base::right                                 右对齐

                                                     ios_base::internal                            符合或基数前缀左对齐,值右对齐

--------------------------------------------------------------------------------------------------------------

setf()效果可以消除

void unsetf(fmtflags mask);


13.一些标准控制符

--------------------------------------------------------------------------------------------------------------

控制符                   调用

boolalpha                setf(ios_base::boolalpha)
noboolalpha           setf(ios_base::noboolalpha)
showbase               setf(ios_base::showbase)
noshowbase           setf(ios_base::noshowbase)
showpoint                setf(ios_base::showpoint)
noshowpoint           setf(ios_base::noshowpoint)
showpos                  setf(ios_base::showpos)
noshowpos             setf(ios_base::noshowpos)
uppercase               setf(ios_base::uppercase)
nouppercase          setf(ios_base::nouppercase)
internal                     setf(ios_base::internal, ios_base::adjustfield)
left                             setf(ios_base::left, ios_base::adjustfield)
right                          setf(ios_base::right, ios_base::adjustfield)
dec                           setf(ios_base::dec, ios_base::base_field)
hex                           setf(ios_base::hex, ios_base::base_field)
oct                            setf(ios_base::oct, ios_base::base_field)
fixed                         setf(ios_base::fixed, ios_base::floatfield)
scientific                 setf(ios_base::scientific, ios_base::floatfield)

--------------------------------------------------------------------------------------------------------------

14.头文件iomanip中提供了一些控制符。
最常用的是setprecision(),setfill(),setw()。








转载于:https://www.cnblogs.com/fablegame/p/6430226.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值