标题:新手求教换行和回车的问题
只看楼主
为爱走天下
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-15
结帖率:0
已结贴  问题点数:20 回复次数:1 
新手求教换行和回车的问题
新手求教几个问题,我看书上说windows下回车键是 回车\r加上换行\n,回车是回到本行开头,换行是光标到达下一行同一位置,2个一起用才是光标到下一行开头,那为什么cout<<a<<b<<'\n'这里的\n是光标到下一行开头呢?
    还有输入输出的一些问题,比如cin>>a,这是我输入5回车,会把换5放入到a的内存中,然后把换行符留在缓冲区中,那回车符呢,按下5回车后,不是应该是5\r\n吗,缓冲区中不是还有个回车符吗,为什么我看书上从没有提到。
    我在csdn上发帖子问了,但还是不懂,说文本模式和二进制模式,cin cout是标准输入输出流,所以是文本模式,既然是文本模式,那按回车不就是\r\n吗,那cin<<a,我输入5回车,然后用cin.get()检测却不到回车符,还有就是\n到底是光标到下一行同一位置还是下一行开头,为什么用cin  cout  输入输出\n都是光标到下一行开头?而不是下一行同一位置?
搜索更多相关主题的帖子: windows 二进制 缓冲区 换行符 csdn 
2013-08-15 20:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
不同平台的 行间隔符 不一样,比如linux的 行间隔符 是 "\n",而windows的 行间隔符 是 "\r\n"。
C/C++这类平台无关性的语言,并不强制要求平台使用什么样的行间隔符,只要求在文本模式下将输入的行间隔符转化为'\n',将输出的'\n'转化为行间隔符

假设在windows中一个文件的内容是 "123\r\n456"
若以二进制方式操作此文件,读进来的内容为"123\r\n456"(内容保持一致)
若以二进制方式操作此文件,写入"abc\r\ndef",文件内容将为"abc\r\ndef"(内容保持一致)
可见内容始终一致,因为此时是二进制操作方式

假设在windows中一个文件的内容是 "123\r\n456"
若以文本方式操作此文件,读进来的内容为"123\n456"(\r\n转化为\n)
若以文本方式操作此文件,写入"abc\ndef",文件内容将为"abc\r\ndef"(\n转化为\r\n)
可见文本方式下,C/C++操作时处理的都是标准的\n,写入平台时自动转化为平台自己的行间隔符
2013-08-16 08:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419173-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.280409 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved