我实现了一个多线程C ++ 11控制台,我有以下循环获取命令:
while (_valid) {
/* print newline with '>' */
cout << "\r> ";
if (cin.fail() || cin.eof()) {
cin.clear(); /* reset cin state */
}
/* random parser function, not relevant */
_parse_cmd(_input);
}
这有一个很大的问题:当我通过键盘输入一个新命令时,如果有一个线程在后台运行并且该线程打印任何内容,它将覆盖我当前的键盘输入并且它将消失,但我的输入将留在cin
缓冲区。
如何重新打印当前的键盘输出?