【c++】【实用】文件输入输出

文本I/O初探

  • 输出到文件

    • 包含 < fstream > 头文件
    • < fstream > 定义了一个用于处理输出的 ofstream 类
    • 需要自己声明一个或多个ostream类对象
      • 使用此对象打开(.open()), 关闭(.close()), 输出(<<) 文本到文件
    • Example
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      #include <iostream>
      #include <fstream>
      using namespace std;

      int main() {

      ofstream fout; // 声明此类对象
      fout.open("out.txt"); // 打开文件
      fout << "hello world\n"; // 输入
      fout.close(); // 关闭文件

      return 0;
      }

  • 从文件中读取

    • 包含 < fstream > 头文件
    • 需要声明一个或多个 ifstream 类型的对象
      • 使用此对象进行打开(.open()) , 关闭(.close()) 和 读取( >> .get() 或 getline()等)
    • 需要正确设计读取循环,以读取到正确的内容
      • 遇到EOF时, 方法 eof() 将返回true
      • 遇到EOF 或 类型不匹配时, 方法 fail() 将返回true
      • 最后一次读取文件时发生文件受损或硬件错误,方法 bad() 将返回true
      • 没有发生任何错误时, 方法 good() 将返回 true -- 对于上一次输入而言 (一般在前面有一条输入)
    • Example
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      #include <iostream>
      #include <fstream>
      #include <cassert>
      using namespace std;

      int main() {

      ifstream fin;
      fin.open("in.txt");
      if(!fin.is_open()) { assert(0); } // 检测是否成功打开

      int x; fin >> x; // 从文件中读取
      cout << x << endl;

      fin.close();
      return 0;

      }