c++ - 在字符串末尾使用退格符
问题描述
退格转义字符 '\b' 用于将光标带回一个字符......所以它必须像我们键盘上的退格键一样工作。
cout<<"Learn c++\b!";
这给出了正常的预期结果 - 学习 c+!
但是当使用 \b 作为最后一个字符时
cout<<"Learn c++!\b";
这 '!' 不擦除输出——学c++!
相反,我必须使用
cout<<"Learn c++!\b \b";
得到输出-Learn c++
谁能说出这种行为的原因..?
解决方案
你的假设:
所以它必须像退格键一样工作
是不正确的。\b
将光标向后移动一个字符。它不会删除任何字符。在导致您观察到的效果的交互式终端中。
std::cout << "Hello, world\b!\n";
这从打印 开始Hello, world
,然后将光标向左移动 1 步,然后打印!
并移动到新行,结果是Hello, worl!
。
std::cout << "Hello, world!\b\n";
这从打印 开始Hello, world!
,然后将光标向左移动 1 步,然后移动到新行,结果为Hello, world!
。
正如问题评论已经提到的那样,这种覆盖效果只发生在终端中。如果您输出到一个文件,包括 在内的所有字符\b
都将按原样保留。
推荐阅读
- r - R中的文本处理
- php - 如何通过控制器通过laravel中的值重定向url?
- angular - 如何为 Angular 5 通配符路由设置 404 状态码
- python - 没有 sudo 访问的 ROS 中的 Odroid GPIO 引脚
- powershell - VSTS 中的 Update-AzureRmEventGridSubscription 未被识别为 cmdlet 的名称
- php - 使用 Laravel 从日期数组计算每个用户的年龄
- javascript - 不同系列的 Cutsom X 轴范围-highchart
- java - Spring Data JPA:org.hibernate.StaleStateException:批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1
- java - How to increase Maximum Memory Pool Size? Apache Tomcat 9
- android - 即使在授予运行时权限后也无法在设备的 Documents 文件夹中创建新文件夹