C++ 按行读取文件:hasNextLine?
C++ reading file by line: hasNextLine?
我正在读取这样一个文件的内容:
#include <iostream>
#include <fstream>
using namespace std;
char line[256];
ifstream infile(filename, ios::in);
if(infile){
while (infile.getline(line, 256)) {
std::cout << line << std::endl;
}
}
在 while 循环中我想做一些事情但只在所有 n-1 次迭代中,而不是在最后一次迭代中(文件行)...所以我想到了类似 infile.hasNextLine()
但不幸的是我找不到这样做的东西。
如何在 C++ 中实现这种行为?
计算文件中的行数是唯一的方法吗?
另一种方法是在 2-n 次迭代中做您想做的事情,而不是在第一次迭代中做。我猜你想在两行之间做一些事情?
您可以使用 peek()
:
if (infile.peek()!=EOF)
...
如果您已经阅读了最后一行,则没有更多内容可读,peek()
将 return EOF
。相反,如果 peek()
return 是其他内容,则意味着仍有数据要读取,因此下一行。
我正在读取这样一个文件的内容:
#include <iostream>
#include <fstream>
using namespace std;
char line[256];
ifstream infile(filename, ios::in);
if(infile){
while (infile.getline(line, 256)) {
std::cout << line << std::endl;
}
}
在 while 循环中我想做一些事情但只在所有 n-1 次迭代中,而不是在最后一次迭代中(文件行)...所以我想到了类似 infile.hasNextLine()
但不幸的是我找不到这样做的东西。
如何在 C++ 中实现这种行为?
计算文件中的行数是唯一的方法吗?
另一种方法是在 2-n 次迭代中做您想做的事情,而不是在第一次迭代中做。我猜你想在两行之间做一些事情?
您可以使用 peek()
:
if (infile.peek()!=EOF)
...
如果您已经阅读了最后一行,则没有更多内容可读,peek()
将 return EOF
。相反,如果 peek()
return 是其他内容,则意味着仍有数据要读取,因此下一行。