C ++ - 从标准输入中获取可变数量的整数,n次

时间:2015-07-04 11:07:05

标签: c++ cin getline istringstream

我无法弄清楚为什么以下程序中的循环没有正好运行testCount次。请帮助纠正它。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;
  int main() {
  size_t testCount;
  cin >> testCount;
  if(testCount < 0 || testCount > 100) return 0;
  int input;
  while(testCount--) {
    string instr;
    getline(cin,instr);
    istringstream iss(instr);
    while(iss >> input) {
      cout << input << endl;
    }
  }
  return 0;
}

1 个答案:

答案 0 :(得分:0)

感谢。我知道了。问题出在getline()上。第一个循环周期被浪费,因为当我在输入getline()值后按enter key时,testCount占据了包含新行字符的第一行。

std::ws是一个输入流操纵器,它忽略了遇到第一个非空白字符的所有空格。

此外,如果getline不适合行,cin >> ws会留下空白。 #include <iostream> #include <string> #include <sstream> using namespace std; int main() { size_t testCount; cin >> testCount >> ws; if(testCount < 0 || testCount > 100) return 0; int input; while(testCount--) { cout << "testCount " << testCount << endl; string instr; cin >> ws; getline(cin,instr); istringstream iss(instr); while(iss >> input) { cout << input << endl; } } return 0; } 会丢弃这些内容。

这是防弹代码:

line_split = line.split(' ')