The IO Library

IO类

  • IO库类型和头文件

IO对象无拷贝或赋值

  • 由于不能拷贝IO对象,我们不能将函数的形参或返回类型设为流类型。

条件状态

  • IO库条件状态

管理输出缓冲

  • 导致缓冲刷新的条件有以下几种:
    • 程序正常结束
    • 缓冲区满
    • 使用endl, flush等操纵符显式刷新缓冲
    • 使用unitbuf操纵符设置流的内部状态,使流在每次输出操作后自动刷新缓冲
    • 一个输出流A可以关联到另一个流B,此时读写B时,A的缓冲区会被刷新
  • 有两个与endl类似的操纵符:flushendsflush刷新缓冲区但不向输出添加任何字符;ends在缓冲区末尾插入一个空字符,然后刷新缓冲区。
    1
    2
    3
    cout << "hi!" << endl;   // writes hi and a newline, then flushes the buffer
    cout << "hi!" << flush; // writes hi, then flushes the buffer; adds no data
    cout << "hi!" << ends; // writes hi and a null, then flushes the buffer

文件输入和输出

  • fstream特有操作

使用文件流对象

  • fstream对象被销毁时,会自动调用close

文件模式

  • 文件模式

  • 默认情况下,当我们打开一个ofstream时,文件的内容会被丢弃。阻止一个ofsteam清空给定文件内容的方法是同时指定app模式:

    1
    2
    3
    4
    5
    6
    7
    // file1 is truncated in each of these cases
    ofstream out("file1"); // out and trunc are implicit
    ofstream out2("file1", ofstream::out); // trunc is implicit
    ofstream out3("file1", ofstream::out | ofstream::trunc);
    // to preserve the file's contents, we must explicitly specify app mode
    ofstream app("file2", ofstream::app); // out is implicit
    ofstream app2("file2", ofstream::out | ofstream::app);

string流

  • stringstream特有操作

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!