IO流
流的概念:若干字节组成的一个字节序列,代表信息从源到目的的流动
IO流主要分为:标准输入输出流,字符流,文件流等等
基本输入输出流
对象
cin:标准输入,可以重定向。
cout:标准输出,可以重定向。
cerr:标准错误,不可重定向。
clog:标准出错,可以重定向。
常用的函数
put( )
输出字符。
get( )
输入字符。
1
2char c1 = cin.get();
cout.put(c1);//实现一个简单的字符输入输出write(streamsize n,char* s)
将一个字符数组的前n个字符写入流中。
getline(char* s, streamsize n)
从
istream
中读取至多m个字符(包含\0)保存在c对应的数组中。如果还没读够也会保存。能接收空格,用回车当作数据间隔;而cin没办法接收空格,以空格作为数据间隔。此外,它还有一种重载形式:
getline(char* s, streamsize n,char delim)
delim
是指定的截断字符,如果遇到该字符,读取终止,且delim不会保存进s对应的数组中。这里要注意了,
getline
函数在头文件<istream>
and<string
均有。1
2
3char c2[10];
cin.getline(c2, 5,'a');
cout.write(c2, 2);//简单测试样例
格式控制
<iomanip>
库
用来对输入输出操作的格式进行更加方便的控制
控制符 | 作用 |
---|---|
dec | 设置整数为十进制 |
hex | 设置整数为十六进制 |
oct | 设置整数为八进制 |
setbase(n) | 设置整数为n进制(n=8,10,16) |
setfill(c) | 设置字符填充 |
setprecision(n) | 设置浮点数的有效数字为n位 |
setw(n) | 设置字段宽度为n位 |
setiosflags(ios::fixed) | 设置浮点数以固定的小数位数显示 |
setiosflags(ios::scientific) | 设置浮点数以科学计数法表示 |
setiosflags(ios::left) | 输出左对齐 |
setiosflags(ios::right) | 输出右对齐 |
setiosflags(ios::skipws) | 忽略前导空格 |
setiosflags(ios::uppercase) | 在以科学计数法输出E与十六进制输出X以大写输出,否则小写 |
setiosflags(ios::showpos) | 输出正数时显示”+”号 |
setiosflags(ios::showpoint) | 强制显示小数点 |
resetiosflags() | 终止已经设置的输出格式状态,在括号中应指定内容 |
move
字符流
<sstream>