所以我有一个函数可以不断跳过第一个 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
}
原文由 Derp 发布,翻译遵循 CC BY-SA 4.0 许可协议
确保您没有使用
cin >> str
。在调用函数之前。如果你使用cin >> str
然后想使用getline(cin, str)
,你必须先调用cin.ignore()
。如果使用 c 字符串:
ADD :你的错误可能不在函数本身,而是 在 调用函数之前。流
cin
必须首先读取一个换行符\n'
cin.getline
。