在输入后,我如何编辑用户对其输入的看法

How can I edit what the user sees of their input after it has been entered?

本文关键字:输入 用户 看法 编辑 何编辑      更新时间:2023-10-16

接受如下输入,

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

我知道流是用来插入和提取数据的。

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

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

一旦您的进程从I/O库获得字节,您就可以将其存储在数组中,然后您就可以在字节数组上实现"\b"的行为。

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

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