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

标签 c++ file-io getline

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

3
1 8

我发现有些文件的第一行有无关字符,我需要忽略这些字符。有点像

3 t
1 8

我只是通过执行 cin >> var >> var 2 >> var3; 来读取数据但是当那个额外的 t 被扔进混音时,它把一切都搞砸了。解决此问题的最佳方法是什么?在我 cin 第一个变量之后有什么方法告诉它跳过该行的其余部分吗?或者我会使用 getline函数然后以某种方式解析它?谢谢。

最佳答案

如果文件是这样的

[number] garbage
[number] [number] garbage

并且您知道数字始终位于行中的正确位置,然后我将使用 std::getline() 读取每一行,然后尝试读取预期数量的整数来自你阅读的每一行。

关于C++从重定向到我的程序的文件中读取特定数据段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805362/

相关文章:

c++ - std::sort 是否也针对少量项目进行了优化?

c++ - 模板扣: porting to C++11

c++ - if语句中的getline

c++ - std::getline 在遇到 eof 时抛出

c++ - 什么时候可以安全地从compare_exchange中删除memory_order_acquire或memory_order_release?

c++ - 高效计算随机误差

C: > 的实现不替换文件

c - 为什么在进程退出时数据没有被刷新到文件?

java - 如何在 Java 中将两个单独的文件复制到两个单独的位置?

c++ - 从 Getline 解析空格分隔的数字