线程输入问题

时间:2013-07-14 18:15:27

标签: c++ multithreading io

我对线程很新,我正在尝试创建一个基本的异步输入程序。

[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;
}

这样做的目的是在用户输入文本时打印输出。 但是,它会将输出打印到输入行,这会干扰输入。 有没有办法让它在输入线上方打印?

截图: incorrect

1 个答案:

答案 0 :(得分:0)

你可以将cin缓冲区重定向到一个文件(或其他流),然后用cout显示它。

How to redirect cin and cout to files?

问题现在变成:如何在没有干扰的情况下显示cout?使用互斥锁和lock_guard

希望有所帮助,