📜  c++ 如何从文件中读取 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.873000             🧑  作者: Mango

C++ 如何从文件中读取

在C++中,我们可以使用文件流操作来读取文件内容。文件流可以通过fstream库实现,包含如下两个类:

  1. ifstream:从文件中读取数据
  2. 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()函数逐行读取文件中的内容,并将每行内容保存到名为linestd::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++中变得非常简单。