📅  最后修改于: 2023-12-03 15:13:58.881000             🧑  作者: Mango
C++ 中的文件对象指的是 fstream
、ifstream
、ofstream
这三个类,它们提供了对文件进行读写的方法和相关操作。
使用文件对象操作文件前,需要先打开文件。文件可以打开为输入文件(读取)、输出文件(写入)和输入/输出文件(读取和写入)。打开文件需要指定文件名和打开方式(读、写、追加等)。
打开文件时,需要指定打开方式。常见的打开方式有:
ios::in
:以输入方式打开文件(读取)ios::out
:以输出方式打开文件(写入)ios::binary
:以二进制方式打开文件ios::trunc
:打开文件时清空文件ios::ate
:打开文件时直接定位到文件末尾ios::app
:以追加方式打开文件这些打开方式可以组合使用,如:
fstream file("example.txt", ios::in | ios::out);
打开一个名为 example.txt
的文件,以读取和写入方式。
使用 fstream
、ifstream
和 ofstream
类可以打开文件流。它们分别用于文件的输入、输出和输入/输出。
fstream
:同时支持读写ifstream
:支持读取文件ofstream
:支持写入文件fstream file("example.txt", ios::in | ios::out);
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
// 文件操作
file.close();
文件对象提供了几个方法,用于对文件进行操作。
使用 ofstream
对象可以将数据写入文件中。使用 ofstream
对象,需要调用 open()
方法打开文件并打开文件流。
ofstream file("example.txt");
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
file << "Hello, World!" << endl;
file << "This is a example." << endl;
file.close();
上述代码将 Hello, World!
和 This is a example.
两行文本写入到 example.txt
文件中。
使用 ifstream
对象可以从文件中读取数据。同样需要调用 open()
方法打开文件并打开文件流。
ifstream file("example.txt");
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
string line;
while (getline(file, line)) {
cout << line << endl;
}
file.close();
上述代码将 example.txt
文件中的每一行输出到控制台上。
使用 fstream
对象同时支持读取、写入文件。需要指定打开文件的方式:
fstream file("example.txt", ios::in | ios::out);
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
// 向文件中写入内容
file << "Hello, World!" << endl;
// 将文件指针定位到文件开头
file.seekg(0, ios::beg);
// 从文件中读取内容
string line;
while (getline(file, line)) {
cout << line << endl;
}
file.close();
上述代码将 Hello, World!
写入 example.txt
文件中,并读取文件的内容输出到控制台上。
使用文件指针可以定位到文件的某个位置进行读取或写入操作。
可以使用 seekg()
方法定位输入文件的位置,使用 seekp()
方法定位输出文件的位置。
指针的偏移量是相对于指定的位置,如:
ios::beg
:从文件开头计算偏移ios::end
:从文件末尾计算偏移ios::cur
:从当前位置计算偏移fstream file("example.txt", ios::in | ios::out);
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
string line;
// 读取第一行
getline(file, line);
// 将文件指针定位到第一行结尾,并向文件中写入内容
file.seekp(line.length(), ios::cur);
file << "- Appended Text" << endl;
file.close();
上述代码读取文件的第一行,将文件指针定位到第一行结尾,并向文件中追加了一行文本。
使用 eof()
方法可以判断是否到达文件的末尾,使用 fail()
方法可以判断文件是否读写出错。
ifstream file("example.txt");
if (!file.is_open()) {
cout << "文件打开失败" << endl;
return 1;
}
string line;
while (getline(file, line)) {
cout << line << endl;
}
if (file.eof()) {
cout << "到达文件结尾" << endl;
} else if (file.fail()) {
cout << "文件读取出错" << endl;
}
file.close();
上述代码读取文件的每一行,然后判断文件是否到达了末尾或者出错。
C++ 中的文件对象提供了对文件进行读写的方法和相关操作。它们是 fstream
、ifstream
和 ofstream
类。打开文件时需要指定打开方式,在进行读写操作前需要先打开文件流。使用文件指针可以对文件进行定位操作。使用文件状态方法可以判断文件是否读写完成或出错。