【问题标题】:Reading lines with 2 numbers each in C++在 C++ 中读取每行有 2 个数字的行
【发布时间】:2013-10-07 06:00:41
【问题描述】:

我对我的 C++ 很生疏。我想知道以以下格式读取输入的最佳方法是什么:

400 200
138 493
...

我目前使用while(cin.peek()!=-1) 检查EOF,然后在其中使用while(cin.peek()!='\n') 检查换行符。这对于阅读整行文本来说很好,但我怎样才能将其限制为 2 个数字和/或仅获取这 2 个数字?

【问题讨论】:

  • while (std::getline(std::cin, some_string)) { parse(line); } 然后您可以通过例如创建一个std::stringstream() 并使用operator >> 将数字提取为两个ints 来解析该行。
  • 即使其他答案有效,我也要试试这个,谢谢!

标签: c++ file io ifstream


【解决方案1】:
int num1,num2;
while(cin>>num1>>num2)
{
     //...
}

string line;
int num1,num2;
stringstream ss;
while(getline(cin,line))
{
    ss<<line;
    ss>>num1>>num2;
    //...
}

【讨论】:

  • 这样,谢谢。虽然如果我碰巧用 3 个数字尝试它,它会挂起等待第 4 个。但我认为我正在使用的输入无论如何都保证是 2 个数字。
猜你喜欢
  • 1970-01-01
  • 2011-04-28
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2020-08-18
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多