C++如何在cout中正确使用退格“\b”

结论

简单地说,用 \b 退格之后不能紧接着换行,无论用什么方式换。

错误示例 1

代码:

cout << "1,2,3,4,5,\b" << endl;

希望输出:

1,2,3,4,5

实际输出:

1,2,3,4,5,

原因:std::endl 在刷新输出缓冲区的时候同时会换一个行。

错误示例 2

代码:

cout << "1,2,3,4,5,\b\n" << "Something else..." << endl;

希望输出:

1,2,3,4,5
Something else...

实际输出:

1,2,3,4,5,
Something else...

原因:用转义字符换行也不行。

正确示例 1

代码:

cout << "I have a pen\b\b\b\bn apple" << endl;

输出:

I have an apple

归纳:在 \b 后面有其他除换行之外的字符,\b 可以正常工作。

正确示例 2

代码:

cout << "1, 2, 3, 4, 5, " << "\b\b " << endl;
// 在 \b\b 后面有一个空格
cout << "Something else..." << endl;

输出:

1, 2, 3, 4, 5
Something else...

归纳:如果需要在一行的末尾用 \b 退去几个字符,则需要在该行最后一个 \b 后面加一个空格(或任意其他字符)。

注意事项

代码:

cout << "This is something.\n\bAnd something else." << endl;
// 在 \b 后面有其他非换行字符(正确的退格方法)

输出:

This is something.
And something else.

说明:即使用前述正确的方法,\b 也没法退掉换行符。

  • 23
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值