写入到文件中
与cout类似
必须包含头文件fstream。
头文件fstream定义了一个用于输出的ofstream类。
需要声明一个或多个ofstream变量(对象),并以自己喜欢的方式命名,遵守常用命名规则。
必须指明名称空间std;
需要将ofstream对象与文件关联起来。方法之一是使用open()方法。
使用完文件后,应使用方法close()将其关闭。
可结合使用ofstream对象和运算符<<来输出各种类型的数据。
ofstream outFile;
ofstream fout;
outFile.open("fish.txt");
char filename[50];
cin >> filename;
fout.open(filename);
使用文件输出的主要步骤如下:
1、包含头文件fstream。
2、创建一个ofstream对象。
3、将该ofstream对象同一个文件关联起来。
4、就像使用cout一样使用该ofstream对象。
注意
方法close()不需要使用文件名作为参数,这是因为outFile已经同特定的文件关联起来。如果忘记关文件,程序正常终止时将自动关闭它。
如果该程序运行前fish.txt文件并不存在,方法open()将新建一个名为fish.txt的文件。
如果存在,将丢弃原有内容,然后将新的输入加入到该文件中。该默认行为可修改。
读取文本文件
与cin类似
必须包含头文件fstream。
头文件fstream定义了一个用于输出的ifstream类。
需要声明一个或多个ifstream变量(对象),并以自己喜欢的方式命名,遵守常用命名规则。
必须指明名称空间std;
需要将ifstream对象与文件关联起来。方法之一是使用open()方法。
使用完文件后,应使用方法close()将其关闭。
可结合使用ifstream对象和运算符>>来输出各种类型的数据。
可使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()方法来读取一行字符。
可以结合使用ifstream和eof()、fail()等方法来判断输入是否成功。
ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则被转换为false.
ifstream inFile;
ifstream fin;
inFile.open("bowling.txt");
char filename[50];
cin >> filename;
fin.open(filename);
检查文件是否被成功打开的首先方法时使用is_open()方法。
inFile.open("bowling.txt");
if(!inFile.is_open()){
exit(EXIT_FAILURE);
}
如果成功打开,方法is_open()返回true,函数exit()终止程序。
exit函数需要头文件cstdlib的支持。
Windows文本文件的每行都以回车字符和换行字符结尾;通常情况下,C++在读取文件时将这两个字符转换为换行符,并在写入文件时执行相反的转换。
读取文件时的几点检查
首先,读取文件时不应超过EOF,如果最后一次读取数据时遇到EOF,方法eof()将返回true。
其次,可能发生类型不匹配的情况,方法fail()将返回true(如果遇到了EOF该方法也返回true)。
最后,可能出现意外问题,如:文件受损或硬件故障,方法bad()将返回true。