【问题标题】:How to not read the next line if a condition is met? [closed]如果满足条件,如何不读取下一行? [关闭]
【发布时间】:2021-06-20 13:31:55
【问题描述】:

我正在开发一个项目 (C++),该项目读取类似于以下的文件 (.txt):

0
40
120
360 440
760
840
1080

我正在使用带有函数 getline() 的 For 循环逐行读取文件,但在 For 循环中我有一个条件,如果满足该条件,我不想读取下一行,相反,我希望读取文件的指针在循环的下一次迭代中保持在相同的位置。我该怎么做?

【问题讨论】:

  • 看来你已经准确描述了如何操作:如果满足条件,请不要调用getline()
  • 但是如果我的条件在 for 循环内,我该怎么做呢?
  • 条件在for循环外时的方式相同。 if 语句的工作方式相同,无论它们是在某个循环内部还是外部。
  • 所以想象一下我有:for (i = 0; getline (readMyFile, text); i++) { if (condition) { ...}}。如何不调用 getline() 函数?
  • 直接方法:将其移到if语句中,将循环条件改为只检查流状态;或者完全省略循环条件,并将循环终止逻辑移到for 循环内(使用break 语句)。

标签: c++ for-loop getline


【解决方案1】:

我建议您使用 ifstream 阅读该行,查看 this 。然后将其存储到向量或数组中; 用于您的目的的伪代码可能如下所示:

#include<iostream>
#include<fstream>
using namespace std;
int main(){
    int array[size];
    ifstream file_num("file.txt");
    for(int i=0;i<size;i++){
        if(condition){
            file_num>>array[i];
        }
   }
        //you can return the index of the position where you want to break and then use it from that index for next iteration;
}

【讨论】:

  • 看起来不错,唯一的问题是,我的文件大小不是静态的。不过谢谢你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多