我正在编写一个程序,以下面的格式从文本文件中读取数据。如何跳过阅读以星号开头的任何行?
* 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});
}
}
答案 0 :(得分:1)
您可以在进行更多阅读之前检查星号,如果找到,请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});
}
}
答案 1 :(得分:0)
除非您的文件具有特定格式(例如,以星号开头的每一行都有固定数量的符号),否则您不能跳过该行,因为您不知道要跳过多少个符号。您应该做什么 - 逐行读取文件,如果您读取的行以星号开头跳过处理它。
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});
}
}