do-while循环中的getline问题

时间:2019-04-26 10:41:48

标签: c++ do-while getline

getline函数在do-while循环的第一次迭代中工作,并且允许用户输入其名称并输出该名称。当用户输入“ y”时,do while循环再次运行,但不允许用户输入其名称,它只是跳过getline函数,就好像它不在那里一样。我使用getline函数而不是cin,因为用户必须输入包括空格(空白字符)的全名。

我已经将userName的初始化语句移入了循环,但这没有帮助。

#include <iostream>
using namespace std;

int main() {
  string userName = "";
  char response; 

  do
  {
    cout << "Enter a name: ";
    getline(cin, userName);

    cout << userName << endl;

    cout << "You wanna carry on? ";
    cin >> response;
    cin.ignore(1, '\n');
  }while(response == 'y');   

  return 0;
}

我希望此代码允许用户在do-while循环的每次迭代中使用空格输入其名称。

解决方案 我遇到的解决方案是,我在do-while循环结束之前添加了cin.ignore(1,'\ n')。这将忽略getline函数添加到字符串中的换行符。

0 个答案:

没有答案