【问题标题】:C++ reading file by line: hasNextLine?C++ 逐行读取文件:hasNextLine?
【发布时间】:2015-04-18 18:40:59
【问题描述】:

我正在读取这样一个文件的内容:

#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++ 中实现这种行为?

计算文件中的行数是唯一的方法吗?

【问题讨论】:

  • 不相关,但你很少想使用 getline 的重载,它接受一个指向 char 的指针——你通常需要 std::string line; while (std::getline(infile, line)) ...

标签: c++ file io iteration


【解决方案1】:

你可以使用peek():

if (infile.peek()!=EOF) 
   ...

如果您已阅读最后一行,则无需阅读更多内容,peek() 将返回 EOF。相反,如果peek() 返回其他内容,则意味着仍有数据要读取,因此下一行。

【讨论】:

    【解决方案2】:

    另一种方法是在 2-n 次迭代中做你想做的事情,而不是在第一次迭代中做。我猜你想在两行之间做一些事情?

    【讨论】:

    • 逐行解析,着色,按两个一组对行进行分组,并用它做一些其他的事情,最后我想在读取最后一行之前在控制台上输出一些输出。
    猜你喜欢
    • 2014-06-21
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2022-01-25
    • 2015-05-19
    相关资源
    最近更新 更多