C++ 为什么使用'\b';到了新线就没用了?

C++ 为什么使用'\b';到了新线就没用了?,c++,newline,iostream,fstream,cout,C++,Newline,Iostream,Fstream,Cout,我一直在尝试从一个文件读取到控制台,然后清除它以读取另一个文件。 所以我发现您可以使用“\b”从控制台中删除字符。然而,当我试图从控制台删除以前的内容时,它只删除最后一行,然后停止 大概是这样的: std::cout<<"Something boring"<<'\n'<<"Something boring on new line"; while(1){ std::cout<<'\b'; std::cout<<' '; std::cout

我一直在尝试从一个文件读取到控制台,然后清除它以读取另一个文件。 所以我发现您可以使用“\b”从控制台中删除字符。然而,当我试图从控制台删除以前的内容时,它只删除最后一行,然后停止

大概是这样的:

std::cout<<"Something boring"<<'\n'<<"Something boring on new line";
while(1){
std::cout<<'\b';
std::cout<<' ';
std::cout<<'\b';
}

std::cout
'\b'
是一个单独的退格,为什么您希望它清除整行?如果要清除控制台屏幕,请使用类似于
std::system(“cls”)
的方法。请将其视为第一个
'\b'
删除了行,第二个删除了
'/n'
,或者在
std::coutBackspace中文本行开始之前的
'
是非标准行为。一些终端(即控制台)忽略了它。其他人可能允许换行到前一行的结尾。@ThomasMatthews OSX允许,但Linux不允许,对吗?在Linux情况下应该怎么做?Linux和Unix中的行为取决于终端驱动程序。一些司机允许,其他人不允许。此外,如果您的前一行滚动超过缓冲区历史记录,那么您就完蛋了。找到不同的光标定位或清除技术。想想电传打字机或打印机。