如何在输入后编辑用户看到的输入内容?

时间:2015-11-07 05:36:25

标签: c++ c++11 stream console

接受如下输入,

char ch = getch();
while(ch != '\r') {
    if(ch == '\b') {
        // do **something** here to remove the previous character from the stream 
    } else {
        cout << ch;
    }
}

我理解该流用于插入和提取数据。

这是否意味着一旦将某些数据发布到流中,它就变得不可变了?

1 个答案:

答案 0 :(得分:0)

I / O库中有一个缓冲区位于您的进程和最终从终端或磁盘或其他设备读取的OS / Kernel级系统调用之间。

一旦您的进程从I / O库获取字节,您就可以将其存储在一个数组中,然后您就可以实现&#39; \ b&#39;在你的字节数组上。

因此,每个字节都经过从设备到I / O库到进程缓冲区的缓冲区管道。您可以在流程管道的最后一个阶段实施撤消类型行为,管道的前几个阶段现在是历史记录,您无法更改历史记录。

您可以使用ungetc将已读取的字节推回到I / O库的缓冲区,稍后可以再次读取,但这似乎与您的问题相关。