getline 不提示输入:缓冲区问题的一个案例
在 C 中使用 getline(cin, mystr) 时,您可能会遇到问题是它不提示用户输入,而是将初始值“0”分配给价格变量。这是因为 getline 读取输入直到遇到换行符 ('n'),并且输入缓冲区中可能存在挥之不去的换行符。
混合输入流运算符(如 >>)时会出现问题。与 getline.当您使用 cin >> i 读取一个整数,用户输入后跟一个换行符。但是,该换行符仍保留在输入缓冲区中。当您随后调用 getline 时,它会将换行符解释为输入,而不提示用户。
可能的解决方案:
cin.ignore(); getline(cin, mystr);
int getInt() { string input; getline(cin, input); return stoi(input); }
推荐实践:
最佳实践是对所有输入使用 getline,确保换行符得到正确处理,并且始终提示输入。避免混合>>使用 getline 来防止这些缓冲区问题。
以上是为什么 `getline` 不提示输入 C 语言?的详细内容。更多信息请关注PHP中文网其他相关文章!