📅  最后修改于: 2023-12-03 14:59:48.873000             🧑  作者: Mango
在C++中,我们可以使用文件流操作来读取文件内容。文件流可以通过fstream
库实现,包含如下两个类:
ifstream
:从文件中读取数据ofstream
:向文件中写入数据下面是一个示例程序,演示如何使用ifstream
读取文件中的内容:
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream infile("example.txt");
if (!infile) {
std::cerr << "Can't open input file\n";
return -1;
}
std::string line;
while (std::getline(infile, line)) {
std::cout << line << "\n";
}
infile.close();
return 0;
}
上述代码会打开名为example.txt
的文件,并将文件内容逐行读取并输出到终端。
解释一下代码:首先,我们定义了一个std::ifstream
对象infile
,并传入"example.txt"
文件名作为参数。if (!infile)
判断文件是否打开成功,如果没打开成功,则输出错误信息并返回-1
。
在while
循环中,我们使用std::getline()
函数逐行读取文件中的内容,并将每行内容保存到名为line
的std::string
对象中,最后输出到终端。
最后,我们用infile.close()
显式关闭文件流。
除了逐行读取文件内容,我们也可以一次性将整个文件读取到一个std::string
对象中:
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream infile("example.txt");
if (!infile) {
std::cerr << "Can't open input file\n";
return -1;
}
std::string file_contents(
(std::istreambuf_iterator<char>(infile)),
(std::istreambuf_iterator<char>()));
std::cout << file_contents;
infile.close();
return 0;
}
上述代码使用了迭代器,将infile
文件流中的所有字符读取到一个std::string
对象中,并直接输出到终端。需要注意的是,在使用迭代器时需要将infile
对象作为第一个参数传入迭代器中。
总之,通过使用标准库中的文件流操作,读取文件在C++中变得非常简单。