问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有些人说windows里面换行到左端要用\r\n,但是为什么控制台编程里面不需要呢,直接\n就可以做到换行到左端

发布网友 发布时间:2022-04-22 10:32

我来回答

3个回答

热心网友 时间:2023-11-01 14:00

楼主你好。。

这个问题我很久很久之前回答过一次,现在找不到了,再跟你说下吧~

\r\n的问题是很多在这个时代才接触编程的,并且是在Windows下使用现代IDE进行编程的新手程序员常有的问题。。

这个问题是历史遗留问题啦,\r在ASCII码中是0x0D,\n在ASCII码中是0x0A。
\r 为 return,回车,即使光标回到当前行的头。
\n为 newline,换行,即光标移动到当前位置的下一行。

楼主肯定在电影里看过打字机吧,\r\n最初就是为传动打字机服务的,打字机是光标不动,纸动的,所以要换行的时候,首先将光标移动到纸的第一行,然后卷轴滚动到下一行,这就是\r和\n最初所执行的功能。

那么当前的问题来了,在现代操作系统中,这两个东西还有啥意义呢,答案是没意义。
所以在Windows中,理论上仍然是使用\r\n来代表光标移动到下一行行首的意思。
而大多数C编译器自动将\n理解为\r\n的意思了,不然"123\n456"就会变成:
123
456
这样了。

顺便说一句,不知道是怎么回事,Windows将换行设计为\r\n,而Linux/Unix将其设计为\n,Mac为\r,这样的后果是,Linux/Unix的文本文件在Win下打开往往变成了一行,而\n在Win下不被支持,也就是说会出现像■类似的乱码,而Mac的文件同理。而Win的文本文件到其他系统中,每行结束往往出现^M这样的乱码,是因为多了一个命令的关系。

请追问~追问VC++里面,MFC里面的CString类的对象要用\r\n耶,只用\n则会在同一行。
而控制台编程就两种都行

追答看来楼主没有仔细看我说的呢。“大多数C编译器自动将\n理解为\r\n的意思了”也就是说在Windows下,换行回车只有一种可能,那就是\r\n,之所以\n也能产生同样的效果,是因为编译器在windows下直接把\n理解为\r\n了(如果是在其他系统下,\n会被理解为\n(Linux)和\r(Mac)),这是编译器自己的行为,而VC++使用的编译器是微软自己的标准,之所以用\r\n来代表回车换行,也许是因为windows是这么定义的吧。
另外VC++和C++是不一样的哦。

热心网友 时间:2023-11-01 14:00

\n 是换行,就是到下一行
\r 是回车,就是回到行首

其实在Windows里,用\n也就ok了,但是为了兼容,很多地方还都是用\r\n

热心网友 时间:2023-11-01 14:01

windows 下的 C 语言运行库会把 \n 解释成 \r\n。
你可以试试把 "a\nb" 写入文件,然后再读入看写入的是什么。追问MFC里面的CString类的对象要用\r\n耶,只用\n则会在同一行
控制台编程就两种都行

追答C 语言运行库的行为(这里指 IO 库)是由 C 标准委员会规定的。
由于几个系统对换行的标记不甚相同,这将使处理文本的程序的移植难度加大。因此规定 C 库 IO 底层在读入换行标记后,统一转换成 "\n",再返回程序;程序在写入 "\n" 之前,先转换成适合的符号,再写入系统。这样相同的 C 语言程序就可以在不同的系统下产生相同的行为,而不需要程序员做特殊的处理。

MFC 对象的行为是微软自行定义的。微软为何如此设计,也许有它自己的考虑。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 Windows 换行符为什么设计成 CR+LF 换行符在Linux和Windows下的区别是什么? windows10版本自动换行怎么找 windows和linux换行区别 关于换行符CR和LF的区别 windows回车向下换行如何设置 命令行窗口如何换行? \r \n区别是什么? 梦见邻居被触电烧死 windows11输入法换行 梦见别人差点触电了是什么意思? 做梦梦见陌生人触电了我把他救了最后还和他恋爱了? 百度地图api 可以点击街道获取街道名字吗 电表准确吗? 电能表应如何测它的灵敏度? 如何操作测试电能表时钟误差操作 怎样检测电表是否准确 怎样判断电表的准确? 怎么检测自己买的万用电表是否精准? 如何能知道电表走的字是不是正确? 回车和换行的区别有哪些? 积家自动机械表怎么调时间 积家约会如何调整时间 积家手表走时不准怎么办,积家手表怎么调 积家手表维修,积家手表日期怎么调 月相表如何看月相?表盘上看月相 注册会计师的作用是什么? 注会证书到底有什么用 CPA证书的功能,有哪些? 问一下百度,知道怎么分享给别人? 怎样把你的链接分享到百度上 百度链接如何分享,让别人搜索到 怎样把百度文章转发朋友圈 怎样黑掉对方微信记录 缝合伤口裂开怎么处理 伤口缝合后又裂开了怎么办 缝合的伤口裂开了怎么能让他快速结巴 伤口没有愈合好,缝线有些裂开了怎么办 整形外科手术的切口缝线处裂开了,还能愈合吗?是什么原因造成的? 伤口缝合后又裂开