У меня недавно возникла проблема с std::cin
, где, когда я пытаюсь использовать его в сочетании с std::this_thread::sleep_for()
, он начинает получать ввод, когда он даже не был вызван все же.std :: cin recieve input, когда он не должен
Вот код, я использую:
#include <iostream>
#include <chrono>
#include <thread>
#include <string>
using std::string
using namespace std::this_thread
using namespace std::chrono
int main(){
string a;
sleep_for(seconds(3)); //start typing around now
std::cin >> a; //the text typed during the sleep_for() shows up now
return 0;
}
Когда вы начинаете набирать во время sleep_for()
, текст только появляется потом, когда std::cin
называется. Мне было интересно, знает ли кто, как это исправить и почему это происходит.
Это сама консоль, а не 'std :: cin'. Он будет делать то же самое для программ, написанных на других языках. – chris
http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer что-то вроде этого, возможно? – Amomum
@Amomum Я думаю, что OP ожидает, что текст даже не появится. –