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

}

最佳答案

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

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

https://stackoverflow.com/questions/10311382/

相关文章:

visual-studio - 将 tinyxml2 与 Visual Studio、Visual

asp.net - 如何在网址栏中隐藏 asp 网址?

php - 使用 sha256WithRSAEncryption 签名需要什么版本的 OpenSSL

architecture - CQRS:查询端的业务逻辑

wordpress - 使用帖子 ID 查询帖子

jsf - 如何为 h :graphicImage Primefaces 添加操作

r - 使用已经汇总的数据在 ggplot2 上生成条形图

c# - 使用 "new"初始化的 Fixed(){} 中的多个指针不起作用

jquery - 如何使用 jQuery 和 HTML5 canvas 画线

debugging - vb6 如何在 msgbox 中进入 Debug模式