c++ - 刷新 std::cin 缓冲区
问题描述
我有一个应用程序正在等待用户输入以发出命令,当它收到命令时,会在屏幕上打印大量内容。std::getline
应用程序在第二次循环等待时崩溃。我认为这是因为缓冲区已满或其他原因。如果我对字符串进行硬编码而不是从中读取,std::cin
则不会发生崩溃。如何在第二次读取之前刷新缓冲区,我使用了以下但它不起作用std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
#include <iostream>
#include <string>
int main ()
{
while(true){
std::string input{};
// if string is hardcoded app works so issue is with std::cin
// std::string input{"command_one"};
if (!std::getline(std::cin, input))
{
continue;
}
// app does work and prints alot to screen
}
}
解决方案
推荐阅读
- django - 字段名称“用户名”对于模型“用户”django rest-auth 无效
- react-native - EXPO : 分享音频文件
- javascript - $fireDb 在 Nuxt Fire / Firebase Vuex 中未定义
- reactjs - 使用 React Hooks 切换对象中一项的值
- c - 如何在不使用 iwconfig 的情况下在 ADB shell 中获得网络速度
- typoscript - 如何自定义 TYPO3 styles.content.get 模板
- r - 通过更改循环中的条件来创建多个二分变量
- r - 根据由第三列分组的第二列中的值将值分配给新列?
- cucumber - 在 Cucumber 中使用不同的数据多次运行相同的步骤
- vb.net - 哪些字符必须为 URI 进行百分比编码?