2

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

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

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

截屏 : 不正确

4

1 回答 1

0

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

如何将 cin 和 cout 重定向到文件?

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

希望有帮助,

于 2013-12-05T17:58:08.300 回答