c++想要逐行读取txt文件,不使用getline函数的情况下,怎么实现
时间: 2024-12-20 08:23:55 浏览: 7
要逐行读取txt文件而不使用`getline`函数,你可以使用`std::ifstream`的成员函数`std::ifstream::getline()`的替代方法,即手动读取字符直到遇到换行符`\n`。以下是一个示例:
```cpp
#include <fstream>
#include <string>
int main() {
std::ifstream infile("zobol.txt");
if (!infile.is_open()) {
// 处理打开文件失败的情况
std::cerr << "Failed to open the file.\n";
return 1;
}
std::string line;
char current_char;
while (infile.get(current_char)) {
if (current_char == '\n') {
// 当读到换行符时,认为已经读取了一行
// 注意这里要把当前字符存入line,因为它可能不是空格
line += current_char;
std::cout << line << std::endl;
line.clear(); // 清空line准备读取下一行
} else {
line += current_char;
}
}
if (infile.gcount() > 0 && infile.peek() != EOF) {
// 如果文件未完全结束,可能是因为最后一行没有换行符
line += current_char;
std::cout << line << std::endl;
}
infile.close();
return 0;
}
```
这个示例会逐个字符地从文件中读取,当遇到换行符时,就认为读取到了一行并打印出来。注意,这种方法可能会导致效率较低,因为`getline`通常能更高效地一次性读取整个行。
阅读全文