一、写入到文本文件中 :
对于文件输入,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对象。
总之,使用文件输出的主要步骤如下。
- 包含头文件fstream。
- 创建一个ofstream对象。
- 将该ofstream对象同一个文件关联起来。
- 就像使用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》