C++入门——60s从0到1
对数据文件的操作与文件流
在C++中,对数据文件的操作通常使用文件流来实现。文件流是标准库中的一种输入输出方式,它允许我们读取和写入文件中的数据。在这篇文章中,我们将详细讲解C++文件流的用法和技巧。
打开和关闭文件流
在对文件进行操作之前,我们需要先打开一个文件流。在C++中,可以使用`fstream`类来打开文件流,并指定文件的打开模式和文件名。下面是一个打开文件的示例代码:
#include <iostream> #include <fstream> using namespace std; int main() { // 打开文件,以读写方式打开 ofstream fout("data.txt", ios::out | ios::app); // 创建一个输出文件流对象 if (!fout) { // 判断文件是否成功打开 cerr << "文件打开失败!" << endl; return 1; } // 关闭文件 fout.close(); return 0; }
在这个例子中,程序使用`ofstream`类来创建一个输出文件流对象,并指定文件名为"data.txt"。在打开文件时,使用了`ios::out`和`ios::app`模式来以追加方式打开文件。需要注意的是,如果文件无法成功打开,将会输出错误信息并退出程序。
在对文件进行操作之后,我们需要关闭文件流以释放资源。在C++中,可以使用`close()`函数或`~fstream()`析构函数来关闭文件流。下面是一个关闭文件的示例代码:
#include <iostream> #include <fstream> using namespace std; int main() { // 打开文件,以读写方式打开 ofstream fout("data.txt", ios::out | ios::app); // 创建一个输出文件流对象 if (!fout) { // 判断文件是否成功打开 cerr << "文件打开失败!" << endl; return 1; } // 写入数据到文件 fout << "Hello, world!" << endl; // 关闭文件 fout.close(); return 0; }
在这个例子中,程序向文件写入了一条数据后,调用了`close()`函数来关闭文件流。需要注意的是,在调用析构函数时,也会自动调用`close()`函数来关闭文件流。
读取和写入数据到文件
在对文件进行操作时,我们可以使用各种运算符和函数来读取和写入数据到文件中。下面是一些示例代码:
向文件写入数据
#include <iostream> #include <fstream> using namespace std; int main() { // 打开文件,以读写方式打开 ofstream fout("data.txt", ios::out | ios::app); // 创建一个输出文件流对象 if (!fout) { // 判断文件是否成功打开 cerr << "文件打开失败!" << endl; return 1; } // 向文件写入数据 fout << "Hello, world!" << endl; // 使用<<运算符来向文件写入数据 int a[] = {1, 2, 3, 4, 5}; // 定义要写入的数据数组 fout.write((char*)&a, sizeof(a)); // 使用write函数向文件写入二进制数据块 // 关闭文件 fout.close(); return 0; }
在这个例子中,程序使用了多种方法向同一个文件写入了多条数据。需要注意的是,在使用`write()`函数时需要同时指定要写入的数据块的大小和类型。