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

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

我尝试研究转义序列所以我测试 我想 将光标移动到行首

我要打印

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 / 换行)。

正如那里所解释的,这在历史上总是有点混乱,这也是 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 上运行,因此结果不同。

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