0

我想在编程中模拟退格并实现如下。

// del.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "123456";
    cout << "\b\b\b" /* backspace key */<< '\x7f' /* DEL key */ << '\x7f' << '\x7f';
    cout << endl;
    return 0;
}

但我得到这样的结果 在此处输入图像描述

如何在不需要用空格替换尾部的情况下获得如下所示的结果

123

也就是说,如何删除而不是替换光标后退格的那些字符。

4

4 回答 4

3

使用“清除到行尾”转义序列,CSI K.

cout << "123456";
cout << "\b\b\b\033[K";
cout << endl;

有关转义序列的列表,请参阅ANSI Escape Code (Wikipedia)。当然,不是所有的都可以在所有终端上运行,但是现在有了软件终端,我就不用担心了。

于 2012-06-30T06:42:50.310 回答
0

您不需要 '\b' 之后的 0x7f。只有那些角色出现了。

于 2012-06-30T06:20:55.473 回答
0

没有通用的方法在所有系统中都适用于 DEL 字符,因为不同的终端以不同的方式实现它。如果您希望它在所有终端中工作,您必须使用空格覆盖。

于 2012-06-30T06:37:25.523 回答
0

您将不得不使用您的操作系统 API 来完成此任务。

于 2012-06-30T06:39:24.037 回答