我有一个FILE*
对象,我想从中逐行读取。但是,最常见的方法是将目录传递到ifstream
,并在while循环中使用getline(ifstream, line)
逐行读取。
但是我没有目录。我必须与FILE*
合作。是否有一个getline()
接受一个FILE*
作为参数?或者,通常在c ++中还有另一种方法来读取FILE*
C read file line by line对我不起作用,因为我不在Linux上。
我还在考虑ifstream是否可以接受FILE
而不是目录,但是对此我不确定。有人可以确认吗?
答案 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;
}
没有测试,但是这个想法应该通过