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 | 在正数前面加上+ |
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 符合或基数前缀左对齐,值右对齐
--------------------------------------------------------------------------------------------------------------
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)
--------------------------------------------------------------------------------------------------------------