我尝试研究转义序列,所以我正在测试
\n
、\r
、\t
,我认为 \r
使光标移动到行首。
我要打印:
hello
\r wokring \t working \n working
所以我在 Visual Studio 2022 中输入此代码
#include <iostream>
int main(void)
{
std::cout << "hello \n \\n working \r \\r working \t \\t working" << std::endl;
return 0;
}
但它打印:
hello
\r_working \t working
网络编译器打印:
hello
\n working \r working \t working
为什么会出现这种情况?我对此有什么误解吗?
\r
是回车符(又名 CR)。\n
是新行字符(又名 LF / 换行)。\r\n
(又名 CRLF,您可以在 VBA 中通过 vbCRLF
常量找到)。正如那里所解释的,这在历史上总是有点混乱,这也是 C++ 拥有标准化
std::endl
的原因。
我们可以计算出你的字符串来弄清楚发生了什么:
hello \n \\n working \r \\r working \t \\t working
Hello
,然后进入下一行。\n working
,然后返回到行首。\r working
,然后是tab
,然后是\t working
,但所有这些都会覆盖\n working
(因为我们回到了行的开头)。我怀疑你的网络编译器不能在 Windows 上运行(可能是某些 Linux 发行版),因此结果不同。