IO流

流的概念:若干字节组成的一个字节序列,代表信息从源到目的的流动

IO流主要分为:标准输入输出流,字符流,文件流等等

基本输入输出流

对象

cin:标准输入,可以重定向。

cout:标准输出,可以重定向。

cerr:标准错误,不可重定向。

clog:标准出错,可以重定向。

常用的函数

  • put( )

    输出字符。

  • get( )

    输入字符。

    1
    2
    char 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
    3
    char 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>