输入被截断

Input being chopped off

本文关键字:输入      更新时间:2023-10-16

这段代码看起来很简单,对吧?

string password;
cin.ignore();
getline(cin, password);
cout << "The user inputted the password: " << password << endl;

好吧,出于某种原因,当我键入"时;秘密"作为密码,cout只产生";secret,即每次都要切掉第一个字符。为什么会这样?

cin.ignore()忽略输入的下一个字符。这意味着CCD_ 3中的CCD_。我想这个调用是因为getline以前的问题似乎跳过了输入(请参阅这个问题)。这仅适用于使用operator>>并预先留下换行符的情况。我建议改为:

getline(std::cin >> std::ws, password);

这将消除剩余空白的问题,并且在没有空白的情况下不会引起问题。

您可以这样做。。

string password;
cout << "enter password:";
getline(cin, password);
cout << "The user inputted the password: " << password << endl;

或者,您可以使用cin来接收输入。现在你可以使用cin.ignore.

string password;
cout << "enter password:";
cin >> password;
cin.clear();
cin.ignore(200, 'n');
cout << "The user inputted the password: " << password << endl;

当您使用cin >>接收输入时,最好使用cin.clear()cin.ignore()。但是,如果您使用的是getline(),则似乎没有必要使用cin.ignore()