繁体   English   中英

在字符串末尾使用退格符

[英]The use of backspace character at the end of the string

退格转义字符 '\b' 用于将 cursor 带回一个字符......所以它必须像我们键盘上的退格键一样工作。

cout<<"Learn c++\b!";

这给出了正常的预期结果 - 学习 c+!

但是当使用 \b 作为最后一个字符时

cout<<"Learn c++!\b";

这 '!' 不擦除输出——学c++!

相反,我必须使用

cout<<"Learn c++!\b \b";

得到输出-Learn c++

谁能说出这种行为的原因..?

你的假设:

所以它必须像退格键一样工作

是不正确的。 \b将 cursor 向后移动一个字符。 它不会删除任何字符。 在导致您观察到的效果的交互式终端中。

std::cout << "Hello, world\b!\n";

首先打印Hello, world ,然后将 cursor 向左移动 1 步,然后打印! 并移动到新的一行,结果是Hello, worl! .

std::cout << "Hello, world!\b\n";

这从打印Hello, world!开始。 ,然后将 cursor 向左移动 1 步,然后移动到新的一行,结果是Hello, world! .

正如问题评论已经提到的那样,这种覆盖效果只发生在终端中。 如果您将 output 保存到文件中,则包括\b在内的所有字符都将按原样保留。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM