用户中断程序输出C ++

时间:2016-09-03 18:39:30

标签: c++

我编写了一个用getline()获取用户输入的程序,然后用一些std::cout s将一些信息输出到终端,并在数据之间有一些延迟。但是,如果用户在输出被打印到屏幕时输入,则无论输入的是什么,都会以非常丑陋的方式拼接到输出中。

是否有某种方法可以阻止用户输入写入屏幕,同时仍然使用终端?

编辑:这不同于"如何防止过度打字",因为该问题是关于防止程序输出打破用户的输入,这个问题是关于防止用户' ;打破程序输出的输入。它们是不同的,不幸的是,这个问题的答案都不适用于这个问题(除了可能编写GUI)。

修改:This回答了我的问题。

#include <iostream>
#include <unistd.h>
#include <termios.h>

int main()
{
    std::string input;
    timespec* interval= new timespec;
    interval->tv_sec=1;

    termios t_echo;
    termios t_noecho;
    tcgetattr(0,&t_noecho);
    tcgetattr(0,&t_echo);

    t_noecho.c_lflag&= ~ECHO;

    while(true)
    {
        std::getline(std::cin,input);
        tcsetattr(0,TCSANOW,&t_noecho);
        std::cout<<input<<std::endl;

        std::cout<<"output1"<<std::endl;
        nanosleep(interval,interval);
        std::cout<<"output2"<<std::endl;
        nanosleep(interval,interval);
        std::cout<<"output3"<<std::endl;
        nanosleep(interval,interval);//prevents typeahead

        tcflush(0,TCIFLUSH);
        tcsetattr(0,TCSANOW,&t_echo);

    }

    return 0;
}

0 个答案:

没有答案