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

C++ - Taking variable number of integers from standard input, n number of times

本文关键字:整数 标准输入 获取 C++-      更新时间:2023-10-16

我不明白为什么下面程序中的循环没有准确地运行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;
}

谢谢。我明白了。问题出在getline()上。当我在键入testCount值后按下enter key时,由于getline()占用了只包含新行字符的第一行,第一个循环周期被浪费了。

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; 
}