一、读写文件的基础操作
在C++中,读写文件需要用到fstream库,包含在头文件中。使用fstream,需构建一个fstream对象,然后通过对象实现文件的读写。
读取文件,步骤如下:
fstream file; // 定义对象 file.open("file.txt", ios::in); // 打开文件 if (!file) // 判断文件是否打开成功 { cout << "File open failed!" << endl; return -1; } while (!file.eof()) // 判断是否到达文件末尾 { string line; getline(file, line); // 读取一行 cout << line << endl; // 输出读取的一行 } file.close(); // 关闭文件
以上程序中,首先定义一个fstream对象file,并使用file.open打开文件。通过设置打开方式,我们可以指定文件的读写方式,这里使用ios::in表示文件的读取操作。接着使用while循环,每次读取文件的一行并输出,直到读取到文件末尾。最后关闭文件。
写入文件,步骤如下:
ofstream file; // 定义对象 file.open("file.txt", ios::out | ios::app); // 打开文件,以追加方式写入 if (!file) // 判断文件是否打开成功 { cout << "File open failed!" << endl; return -1; } file << "Hello, world!" << endl; // 写入一行数据 file.close(); // 关闭文件
以上程序中,首先定义一个ofstream对象file,并使用file.open打开文件。通过设置打开方式,我们可以指定文件的读写方式,这里使用ios::out表示文件的写入操作。由于我们要在文本文件的最后添加新的内容,故使用了ios::app,表示以追加方式打开文件。接着使用file << 将数据写入文件中,并使用endl表示换行符。最后关闭文件。
二、二进制文件读写
二进制文件是一种非文本格式的文件,能够以最小的存储空间保存数据。在C++中,我们可以使用二进制方式打开文件,并进行读写操作。
读取二进制文件,步骤如下:
struct Person { string name; int age; }p; fstream file; file.open("file.bin", ios::in | ios::binary); // 以二进制方式打开文件 if (!file) // 判断文件是否打开成功 { cout << "File open failed!" << endl; return -1; } file.read((char*)&p, sizeof(Person)); // 读取一个Person对象 cout << p.name << " " << p.age << endl; // 输出读取的结果 file.close();
以上程序中,定义了一个Person结构体表示一个人的姓名和年龄。我们使用fstream对象file以二进制方式打开文件,通过设置打开方式,我们可以指定文件的读写方式,这里使用ios::in表示文件的读取操作。使用file.read读取一个Person对象,其中第一个参数为一个字符型指针,用于存储读取的数据,我们需要将指针强制转换成(char*),以便读取二进制数据。第二个参数表示要读取的字节数。最后输出读取的结果。关闭文件。
写入二进制文件,步骤如下:
fstream file; file.open("file.bin", ios::out | ios::binary); // 以二进制方式打开文件,以写入操作 if (!file) { cout << "File open failed!" << endl; return -1; } Person p = { "Tom", 20 }; // 定义一个Person对象 file.write((char*)&p, sizeof(Person)); // 将Person对象写入文件中 file.close();
以上程序中,首先定义一个fstream对象file,并使用file.open打开文件,通过设置打开方式,我们可以指定文件的读写方式,这里使用ios::out表示文件的写入操作。定义一个Person对象,并使用file.write将其写入文件中。注意,在写入数据的时候需要使用强制类型转换。
三、错误处理
在C++中,文件读写操作可能会遇到各种错误,导致程序异常终止。为了保证程序的可靠性,在进行文件读写操作时,我们需要进行适当的错误处理。
fstream file; file.open("file.txt", ios::in); if (!file) { cerr << "File open failed!" << endl; // cerr用于输出错误信息到标准错误输出 return -1; }
以上程序使用了cerr流对象来输出错误信息,cerr是C++标准库定义的一个错误输出流,它跟cout流类似可以用来输出信息,不过它主要用于将程序中的运行时异常信息输出到标准错误输出(stderr)中。
四、小结
本文从基础操作、二进制文件读写、错误处理三个方面详细介绍了C++文件读写的实现方法。良好的文件读写方案不仅能够提升程序的效率,还能够保证程序的可靠性。通过清晰的程序结构和适当的错误处理,我们可以在C++中实现快速、高效、可靠的数据存储和读取。
原创文章,作者:SBBPQ,如若转载,请注明出处:https://www.506064.com/n/317131.html