首页 > 解决方案 > 刷新 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
    }
}

标签: c++c++11c++14

解决方案


推荐阅读