如何删除放到std :: cout的最后一个字符?

Xir*_*dus 29 c++ cout stdout

是否可以在不使用WinAPI的Windows上使用?

bjs*_*123 76

您可能无法删除最后一个字符.

但是你可以通过覆盖最后一个字符来获得类似的效果.为此,您需要通过输出如下所示的'\ b'(退格)字符向后移动控制台光标.

#include<iostream>
using namespace std;
int main()
{
    cout<<"Hi";
    cout<<'\b';  //Cursor moves 1 position backwards
    cout<<" ";   //Overwrites letter 'i' with space
}
Run Code Online (Sandbox Code Playgroud)

所以输出就是

H

  • 你必须要小心,cout在插入退格之前不会决定自己"刷新". (5认同)
  • 我似乎无法使用此方法擦除新行. (3认同)
  • 但是,如果将输出重定向到文件,则^ H和前面的字符仍将存在. (2认同)

Has*_*hia 8

这段代码正是这样做的:

std::cout<<"\b \b";
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果您使用 stringstream 并将 stringstream::str() 与其他字符串进行比较,它将不匹配。这只适用于在终端打印 (3认同)