[英]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.