2

我正在尝试为加载栏设置动画。

通过执行以下操作,它在 Windows 中完全可以正常工作:

    for(int j=0; j<currentSize; ++j)
      cout<<static_cast<char>(219);
    for(int k=maxSize; k>=currentSize; k--)
      cout<<static_cast<char>(177);
    ...
    for(int l = 0; l<maxBarSize; l++){
      cout<<'\b';

但是,当我在 UNIX 中尝试时,退格命令不起作用。它不会删除或打印任何内容。我也尝试过使用'^H'intead of '\b'.

在 UNIX 中不能擦除输出控制台行吗?

4

2 回答 2

3
于 2013-06-01T19:52:56.137 回答
3

打印\b^h只是这样做:它将“打印”这些字符。它不执行“回删除”操作,这是 TTY 程序在响应键盘输入时会执行的操作。您在输出中看不到它们,因为它们不是可见字符。它们改变光标位置。如果您打印:

Hello, World!\b\b\b\b\b\bEarth!

如果您将输出发送到文件,您会看到所有这些字符。但在终端上,它可能看起来像:

Hello, Earth!

世界!” 字符仍然存在,只是被“地球!”覆盖。

于 2013-06-01T19:55:50.210 回答