我正在开发一个将重定向文件作为输入的程序。例如,如果我的程序被称为foo,我会使用./foo < input.txt
调用该程序。我在程序中运行的文件应该在第一行用一个整数格式化,第二行用两个整数格式化。像
3
1 8
我发现有些文件虽然在我需要忽略的第一行有无关的字符。像
这样的东西3 t
1 8
我只是通过cin >> var >> var 2 >> var3;
来阅读数据,但是当这些额外的东西被扔进混合物时,它会把所有东西搞砸。解决这个问题的最佳方法是什么?在我判断第一个变量之后是否有某种方法告诉它跳过剩下的行?或者我会使用getline
函数然后以某种方式解析它?感谢。
答案 0 :(得分:1)
如果文件的格式为
[number] garbage
[number] [number] garbage
你知道数字总是在行的正确位置,然后我用std::getline()
读取每一行,然后尝试从你读过的每一行读取预期的整数数。 / p>
答案 1 :(得分:1)
是的,显而易见的方法是使用std::getline
来阅读一行文字,使用您从中获取的std::string
初始化std::istringstream
,读取正确的项目数从该行开始,并根据需要重复。