gpt4 book ai didi

c++ - 为什么 getline() 跳过输入,即使在 cin.clear() 之后?

转载 作者:可可西里 更新时间:2023-11-01 15:52:34 27 4
gpt4 key购买 nike

所以我有一个函数可以不断跳过第一个 getline 并直接进入第二个。我尝试清除缓冲区,但仍然没有成功,这是怎么回事?

void getData(char* strA, char* strB)
{
cout << "Enter String 1: "; // Shows this line
cin.clear();
cin.getline(strA, 50); // 50 is the character limit, Skipping Input

cout << endl << "Enter String 2: "; // Showing This Line
cin.clear();
cin.getline(strB, 50); // Jumps Straight to this line
}

最佳答案

确保您没有使用 cin >> str。在调用函数之前。如果你使用了cin >> str,然后想使用getline(cin, str),你必须先调用cin.ignore()

string str;
cin >> str;
cin.ignore(); // ignores \n that cin >> str has lefted (if user pressed enter key)
getline(cin, str);

在使用 C 字符串的情况下:

char buff[50];
cin.get(buff, 50, ' ');
cin.ignore();
cin.getline(buff, 50);

ADD:您的错误可能不在函数本身,而是在调用函数之前。流 cin 必须只读取第一个 cin.getline 中的换行符 \n'

关于c++ - 为什么 getline() 跳过输入,即使在 cin.clear() 之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186568/

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