为什么当我使用转义序列时会得到此输出?

问题描述 投票:0回答:1

我尝试研究转义序列,所以我正在测试

\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

为什么会出现这种情况?我对此有什么误解吗?

c++ escaping
1个回答
0
投票
  • \r
    是回车符(又名 CR)。
  • \n
    是新行字符(又名 LF / 换行)。
  • 这两个字符在 Windows 上最常组合为
    \r\n
    (又名 CRLF,您可以在 VBA 中通过
    vbCRLF
    常量找到)。

正如那里所解释的,这在历史上总是有点混乱,这也是 C++ 拥有标准化

std::endl
的原因。

我们可以计算出你的字符串来弄清楚发生了什么:

hello \n \\n working \r \\r working \t \\t working
    写入
  1. Hello
    ,然后进入下一行。
  2. 写入
  3. \n working
    ,然后返回到行首。
  4. \r working
    ,然后是
    tab
    ,然后是
    \t working
    ,但所有这些都会覆盖
    \n working
    (因为我们回到了行的开头)。

我怀疑你的网络编译器不能在 Windows 上运行(可能是某些 Linux 发行版),因此结果不同。

© www.soinside.com 2019 - 2024. All rights reserved.