我对编程非常陌生,并且在 while 循环中使用 getline 时遇到问题。当我计算类(class)变量时,第一个字母丢失了。摆脱 cin.ignore 会将其发送到无限循环。
这是我到目前为止所拥有的:
#include <iostream>
#include <string>
using namespace std;
int main (){
string answer = "Yes";
string course;
while (answer == "Yes"){
cin.ignore();
cout<< "Enter a course name: ";
getline (cin, course);
cout<< course << endl;
cout<< "Continue ('Yes' or 'No')? ";
cin>> answer;
cout<< answer << endl;
}
return 0;
}
最佳答案
将ignore
移至循环底部。它用于删除 cin >>
运算符留在缓冲区中的换行符,因此只有在使用 cin >>
后才需要它。
您还应该将参数传递给 ignore
以忽略所有内容,直到您输入换行符,以防他们在该行中输入的不仅仅是"is"或“否”。您可以通过以下方式做到这一点:
cin.ignore(numeric_limits<streamsize>::max(), '\n');
请参阅此处的工作示例:ideone .
关于while 循环中的 C++ cin.ignore 和 getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052782/