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

时间:2019-06-13 07:36:43

标签: c++ file io getline

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

但是我没有目录。我必须与FILE*合作。是否有一个getline()接受一个FILE*作为参数?或者,通常在c ++中还有另一种方法来读取FILE*

中的行

C read file line by line对我不起作用,因为我不在Linux上。

我还在考虑ifstream是否可以接受FILE而不是目录,但是对此我不确定。有人可以确认吗?

1 个答案:

答案 0 :(得分:2)

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;
}

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