如何从文件中读取特定行

How to read specific lines from a file?

本文关键字:读取 文件      更新时间:2023-10-16

我正在编写一个程序,以从以下格式的文本文件中读取数据。如何跳过以星号开头的行?

* Data set 34.6
* Author: M. S.
1   3     
6   7     
4   5     
... so on

我的代码的相关部分目前如下所示。。它可以一次读取并插入2个数字到我的集合中,但如果顶部有以星号开头的注释行,我会出错。所以我不确定在读取文件时如何忽略这些行。

string lin;
while (getline(if1, lin)) {
        istringstream is1(lin);
        int a, b;
        if (is >> a >> b) {
            set3.insert({a, b});                                    
        } 
    }   

在进行更多读取之前,您可以检查星号,如果找到,continue(跳到while的下一次迭代):

string lin;
while (getline(if1, lin)) {
    if(lin[0] == '*') continue; //Skip this line if it's bad
    istringstream is1(lin);
    int a, b;
    if (is >> a >> b) {
        set3.insert({a, b});                                    
    } 
}  

除非您的文件具有特定的格式(例如,以星号开头的每一行都有固定数量的符号),否则您不能跳过这一行,因为您不知道要跳过多少符号。您可能应该做的是逐行读取文件,如果您读取的行以星号开头,则跳过处理

string lin;
while (getline(if1, lin)) {
    if( lin.length() == 0 || lin[0] == '*' ) continue;
    istringstream is1(lin);
    int a, b;
    if (is1 >> a >> b) {
        set3.insert({a, b});                                    
    } 
}