C ++从重定向到我的程序的文件中读取特定数据段

时间:2010-09-27 15:33:26

标签: c++ file-io getline

我正在开发一个将重定向文件作为输入的程序。例如,如果我的程序被称为foo,我会使用./foo < input.txt调用该程序。我在程序中运行的文件应该在第一行用一个整数格式化,第二行用两个整数格式化。像

这样的东西
3
1 8

我发现有些文件虽然在我需要忽略的第一行有无关的字符。像

这样的东西
3 t
1 8

我只是通过cin >> var >> var 2 >> var3;来阅读数据,但是当这些额外的东西被扔进混合物时,它会把所有东西搞砸。解决这个问题的最佳方法是什么?在我判断第一个变量之后是否有某种方法告诉它跳过剩下的行?或者我会使用getline函数然后以某种方式解析它?感谢。

2 个答案:

答案 0 :(得分:1)

如果文件的格式为

[number] garbage
[number] [number] garbage

你知道数字总是在行的正确位置,然后我用std::getline()读取每一行,然后尝试从你读过的每一行读取预期的整数数。 / p>

答案 1 :(得分:1)

是的,显而易见的方法是使用std::getline来阅读一行文字,使用您从中获取的std::string初始化std::istringstream,读取正确的项目数从该行开始,并根据需要重复。