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>