【问题标题】:C++ Issue - getline skips first inputC++ 问题 - getline 跳过第一个输入
【发布时间】:2012-04-25 07:41:31
【问题描述】:

问题是使用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];
    }

}

【问题讨论】:

  • 不要给我们链接,发布编辑过的代码,突出您遇到的问题。

标签: c++ getline


【解决方案1】:

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

也许在cin &gt;&gt; num; 之后添加一个cin.ignore(1,'\n'); 来吃掉那个流浪的换行符。

【讨论】:

  • 或者只是不要在数字后按回车键。
  • @David:那么您将等待很长时间才能看到"Enter a string: " 提示符。这类事情是我不喜欢使用cin &gt;&gt; 进行交互式输入解析的原因。最好将一行读入字符串并解析它。
  • 别等了。输入字符串即可。
猜你喜欢
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多