使用 getline 和 FILE 而不是 ifstream 的 c++ 读取文件

c++ reading file using getline and FILE instead of ifstream

本文关键字:ifstream c++ 读取 文件 getline FILE 使用      更新时间:2023-10-16

我有一个FILE*对象,我想从中逐行读取。但是,最常见的方法是将目录传递给ifstream,并在while循环中使用getline(ifstream, line)逐行读取。

但是我没有目录。我必须与FILE*一起工作.是否有接受FILE*作为参数的getline()?或者,一般来说,C++ 中是否有另一种读取行的方法FILE*

C 逐行读取文件对我不起作用,因为我不在 Linux 上。

我也在想 ifstream 是否可以接受FILE而不是目录,但我不确定这一点。 谁能确认?

std::vector<std::string> getFileAsLines(FILE *file) {
  std::vector<std::string> out;
  int currentIn = fgetc(file);
  std::string currentLine;
  while(currentIn != EOF) {
    if (currentIn == 'n') {
      out.push_back(currentLine);
      currentLine = std::string();
    } else {
      currentLine += (char)currentIn;
    }
    currrentIn = fgetc(file);
  }
  out.Push_back(currentLine);
  return out;
}

没有测试它,但这个想法应该通过