简单文件输入/输出(C++)

一、写入到文本文件中 :

对于文件输入,C++使用类似于cout的东西。
cout用于控制台输出的基本事实:

  • 必须包含头文件iostream。
  • 头文件iostream定义了一个用处理输出的ostream类。
  • 头文件iostream声明了一个名为cout的ostream变量(对象)。
  • 必须指明名称空间std。
  • 可以结合使用cout和运算符<<来显示各种类型的数据。

文件输出与此极其相似:

  • 必须包含头尾文件fstream。
  • 头文件fstream定义了一个用于处理输出的ofstream类。
  • 需要声明一个或多个ofstream变量(对象),并以自己喜欢的方式对其进行命名,条件是遵守常用的命名规则。
  • 必须指明名称空间std。
  • 需要将ofstream对象与文件关联起来,使用open()方法。
  • 使用完文件后,应使用方法close()将其关闭。
  • 可以结合ofstream对象和运算符<<来输出各种类型的数据。

例如:

#include<iostream>
#include<fstream>
int main() {
    using namespace std;
    char filename[50];
    double score[50],sum=0;
    int n;
    ofstream outfile;
    cin >> filename;
    outfile.open(filename);
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> score[i];
        sum += score[i];
    }
    outfile.precision(2);
    outfile.setf(ios_base::showpoint);
    outfile << "total: " << sum << endl;
    outfile << "average: " << sum / n << endl;
    outfile.close();
    return 0;
}

该代码表示,我们将一个人的总得分和平均得分输出并存储到我们输入的filename中。
重要的是,声明一个ofstream对象并将其同文件关联起来后,便可以像使用cout那样使用它。所有可用于cout的操作和方法(比如<<、endl和setf())都可用与ofstream对象。

总之,使用文件输出的主要步骤如下。

  1. 包含头文件fstream。
  2. 创建一个ofstream对象。
  3. 将该ofstream对象同一个文件关联起来。
  4. 就像使用cout那样使用该ofstream对象。

二、读取文本文件:

对于文件输入,与文件输出类似,它是基于控制台输入的。控制台输入涉及多个方面:

  • 必须包含头文件iostream。
  • 头文件iostream定义了一个用处理输出的istream类。
  • 头文件iostream声明了一个名为cin的istream变量(对象)。
  • 必须指明名称空间std。
  • 可以结合使用cin和运算符>>来读取各种类型的数据。
  • 可以结合使用cin和eof()、fail()方法来判断输入是否成功。
  • 对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false。

文件输出与此极其相似

  • 必须包含头文件fstream。
  • 头文件fstream定义了一个用处理输出的ifstream类。
  • 需要声明一个或多个ifstream变量(对象)。
  • 必须指明名称空间std。
  • 需要将ifstream对象与文件关联起来,使用open()方法。
  • 使用完文件后,应使用方法close()将其关闭。
  • 可以结合ifstream对象和运算符>>来输出各种类型的数据。
  • 可以使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()来读取一行字符。
  • 可以结合使用ifstream和eof()、fail()等方法来判断输入是否成功。
  • ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false。

如果试图打开一个不存在的文件用于输出,将导致后面使用ifstream对象进行输入时失败。检查文件是否被成功打开可使用方法is_open()

inFile.open("bowling.txt");
if (!inFile.is_open()) {
    exit(EXIT_FAILURE);
}

警告:Windows文本文件的每行都以回车字符和换行符结尾;通常情况下,C++在读取文件时将这两个字符转换为换行符,并在写入文件时执行相反的转换。有些文本编辑器,不会自动在最后一行末尾加上换行符。因此,如果使用这种编辑器,要在输入最后的文本后按下回车键,再保存文件。

声明:以上整理自个人理解和Stephen Prata 著的《C++ Primer Plus》

猜你喜欢

转载自blog.csdn.net/MoooLi/article/details/82627548