C ++问题 - getline跳过第一个输入

时间:2012-04-25 07:41:31

标签: c++ getline

问题是使用getline()的部分第一次没有输入,只是说“输入一个字符串:输入一个字符串:”然后你可以在那里输入。

#include <iostream>
#include <string>

using namespace std;

int main()
{
  int nums[100], key=0, num = 0;

  while(num != -1)
  {
    cout << "Enter a positive integer (-1 to exit): ";
    cin >> num;

    if(num != -1)
    {
      nums[key] = num;
      key++;
    }

  }

    if(num != -1)
    {
      nums[key] = num;
      key++;
    }

    int numElements = key;
    string inStrings[100];

    for(int i=0; i < numElements; i++)
    {
      cout << "\n";
      cout << "Enter a string: ";
      getline(cin, inStrings[i]);
    }

    for(int i=0; i < numElements; i++)
    {
      cout << nums[i] << " :: " << inStrings[i];
    }

}

1 个答案:

答案 0 :(得分:6)

问题是,您首先使用cin >> num;来读取数字,但这会在getline()调用的流中留下换行符。

也许在cin.ignore(1,'\n');之后添加一个cin >> num;来吃那个偏离的换行符。