gpt4 book ai didi

C++ cin.ignore 和 while 循环中的 getline

转载 作者:太空狗 更新时间:2023-10-29 20:01:54 30 4
gpt4 key购买 nike

我是编程新手,在 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 .

关于C++ cin.ignore 和 while 循环中的 getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052782/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com