C++ 在linux系统上\r

C++ 在linux系统上\r,c++,linux,bash,terminal,vt100,C++,Linux,Bash,Terminal,Vt100,我正在看一些特定于linux的代码,这些代码输出如下内容: \r\x1b[J> 到std io 我知道[J表示从当前行删除屏幕内容,但是\r在这里做什么 我也看到了以下情况: >user_input\n\r> 其中user\u input是用户输入的文本。但此处的目的是什么?控制字符\r将插入符号(也称为文本光标)移动到当前行的最左侧位置。字符'\r'是回车符。它将光标返回到行的开头 在Internet协议中,它通常与换行符('\n')一起用于标记行尾(大多数标准将其指定为

我正在看一些特定于linux的代码,这些代码输出如下内容:

\r\x1b[J>
到std io

我知道
[J
表示从当前行删除屏幕内容,但是\r在这里做什么

我也看到了以下情况:

>user_input\n\r>

其中user\u input是用户输入的文本。但此处的目的是什么?

控制字符
\r
将插入符号(也称为文本光标)移动到当前行的最左侧位置。

字符
'\r'
是回车符。它将光标返回到行的开头


在Internet协议中,它通常与换行符(
'\n'
)一起用于标记行尾(大多数标准将其指定为
“\r\n”
,但有些标准允许错误的方式)。在Windows上,回车换行符对也用作行尾。在旧的Macintosh操作系统上(OSX之前)行尾使用单回车代替换行符,而UNIX和类UNIX系统(如Linux和OSX)使用单换行符。

\r
是回车符。类似地,
\n
是换行符。

来自

基于ASCII或兼容字符集的系统使用LF或 (换行符'\n',0x0A,十进制为10)或CR(回车符'\r', 0x0D,十进制13),或CR后跟LF(CR+LF, “\r\n”,0x0D0A)。这些字符基于打印机命令: 行进纸指示一行纸应从纸中进纸 打印机因此指示打印机将纸张提前一行,然后 回车符指示打印机回车符应返回 当前行的开始。一些罕见的系统,如QNX 在版本4之前,使用ASCII RS(记录分隔符,0x1E,30英寸 十进制)字符作为换行符


FWIW-这是托架控制的一部分-从大型机控制字到Windows/UNIX/FORTRAN托架控制。托架控制可以像FORTRAN一样在语言级别上实现,也可以像UNIX和Windows一样在系统范围内实现

\n
源于早期PDP用户“界面”(tty终端)的局限性。如果你想看博物馆,就去博物馆

非常简单的一点:上面解释了\n\r之间的区别。但所有这些解释实际上都是说,回车控制依赖于实现

[J
是ANSI转义序列的一部分,以及它们在“符合标准的tty终端”上的作用。 DOS曾经让ANSI.SYS提供:颜色、下划线、粗体使用这些序列

http://ascii-table.com/ansi-escape-sequences.php

这是一个很好的参考问题:
输出中一些看起来奇怪的字符串做什么?

它的发音是回车符,所以我想你可以很容易地用谷歌搜索到它。@om nom nom我在上面的上下文中询问它的用途。过去,新行的意思是:在屏幕或打印机上,将光标向下移动一林e、 但将其保留在同一列中。回车键将其移动到行的开头,而不更改行。要转到下一行的开头,您需要两者(按任意顺序)。Unix和Mac的作者显然认为他们只需要一个字符就可以转到下一行的开头,于是选择了一个字符。在文本文件中,
'\n'
不仅仅是换行符。文本文件是一个行流,'\n'是行终止符。