使用 getline 和 FILE 而不是 ifstream 的 c++ 读取文件
c++ reading file using getline and FILE instead of ifstream
我有一个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;
}
没有测试它,但这个想法应该通过
相关文章:
- ifstream什么都没读
- ifstream文件在从行中读取时被清除
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 将 ifstream 拆分为 n 个流?
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 是否可以在没有真实文件的情况下创建 ifstream
- 虽然循环不读取整个 ifstream 文件
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- Ofstream和IFSTREAM有什么区别?
- 如何将QByteArray转换为std::istream或std::ifstream?
- ifstream 跳过数字,只写 0
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 在函数中声明的 ifStream 对象在发布模式下不起作用
- fstream / ifstream / ofstream 对象如何转换为布尔值
- ifstream 尝试读取 9 到 13 之间的无符号字符时非常奇怪的行为
- 尝试在 C++ 中为 ifstream 提供一个变量
- ifstream 读取的字符与文件中写入的字符不同
- 如何使用 ifstream 检查文件中变量的类型?