在UNIX中输出退格字符
Output backspace character in UNIX
我正在尝试为加载条添加动画。
在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'
代替'b'
。
在UNIX中不可能擦除输出控制台行吗?
您试过打印[backspace]
, [space]
, [backspace]
吗?这将在你要删除的字符上方打印一个空格。
如果这不起作用,我怀疑问题不在于你的代码,而在于你的终端模拟器(xterm等)有些支持退格,有些不支持,(有些是可配置的)。
同时,Elazar发表了关于调用cout.flush()
的评论。这是因为大多数情况下,stdout
是行缓冲的。这意味着库将缓冲所有写入stdout
的数据,直到遇到换行符,此时缓冲区将刷新到实际的文件描述符。通过调用flush()
,可以强制将输出缓冲区立即写入文件(TTY)。
打印b
或^h
就是这样做的:它将"打印"这些字符。它不执行"回删"操作,而TTY程序在响应键盘输入时会执行"回删"操作。您不会在输出中看到它们,因为它们不是可见字符。它们改变光标的位置。如果你打印:
Hello, World!bbbbbbEarth!
如果您将输出发送到文件,您将看到所有这些字符。但是在终端上,它可能看起来像:
Hello, Earth!
"World!"字符还在,只是被"Earth!"
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- x86 上的指针大小和奇怪的字符输出
- 如何修复C++中的随机字符输出?
- Visual Studio-怪异的字符输出
- 需要我当前的字符输出,这是它在C++中的整数值
- 宽字符输出结果
- 将字符输出随机化为文本文件
- C++和printf-奇怪的字符输出
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 下一个回文 .奇怪的字符输出
- 不要将宽字符输出到命令提示符