如何从文件中读取特定行
How to read specific lines from a file?
我正在编写一个程序,以从以下格式的文本文件中读取数据。如何跳过以星号开头的行?
* 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});
}
}
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中