我是线程的新手,正在尝试创建一个基本的异步输入程序。
[ main.cpp ] :
#include <iostream>
#include <thread>
#include <string>
#include <chrono>
void ThreadedOutput(void) {
while(true) {
std::string output="Distracting output!\n";
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << output;
}
}
int main(void) {
std::thread active_thread(&ThreadedOutput);
active_thread.detach();
std::string input;
while(input!=std::string("password")) {
std::cin >> input;
}
return 0;
}
这样做的目的是在用户输入文本时打印输出。 但是,它将输出打印到输入线上,这会干扰输入。 有没有办法让它打印在输入行上方?
截图:
最佳答案
您可以将 cin 缓冲区重定向到一个文件(或其他流),然后用 cout 显示它。
How to redirect cin and cout to files?
现在的问题是:如何不受干扰地显示cout?使用互斥体和 lock_guard
希望对你有帮助,
关于c++ - 线程输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642232/