Linux、Windows中换行符的区别以及注意事项1 .已知各个系统中换行符的表示如下:
2. 问题:
假设有一个Windows中的记事本1.txt文本内容如下:
<里面的内容
现在将1.txt文本移入到Linux系统当中,用如下的C++代码读写和输出文本的内容。
linux换行按哪个键
问题1:如果2用cout<<inString;代替得到的结果2.txt用Linux下的文本编辑器Gedit打开,是否会有所变化?为什么?
问题2:如果要使替换后的结果和原来的结果有所变化,该如何修改1句。
问题3如果2用outFile<<inString<<"\t"<<endl;来替换,会有什么情况呢?
解答:
问题1:显然是没有变化的。都是和我们在Windows看见的文本一样。这个在Linux下面实验一下就可以确定。为什么没有变化呢。原来是因为在Linux下面,getline
语句默认情况下是以读到\n作为一行的结束符号。由于1.txt是从Windows里面移来的,所以每一行都是以\r\n作为结尾,所以在Linux里面用getline读取的时候,每一行都读到了一个\r,而这个则刚好是Unix里面的行符。,
换这样inString每一行后面包
刚Windows里面的含了一个\r,所以如果加了一个<<endl则刚好输出的是\r\n,好是
一个换行符。所以如果用Gedit打开,则可以智能的判断为一个Windows里面的行符
换,我们也可以看见一个换行。蹊跷的就是,如果不加<<endl结果也是一样的。为什么呢?
开时Gedit也可以智能的当做是一个Unix 就是因为每一行后面都有个\r,所以打的候,
系统里面的一个换行符。所以两个结果是一样的。
问题2:经过上面的分析,只要如下修改1就可以了。请读者自己思考为什么。
问题3:因为在\r和\n插入了一个\t,所以相当于输出两个换行(先输出一个换行再
换\r,第二个行符一个制表符,然后再换行)。其中第一个换行是Unix里面的行符
这变见结
是Linux里面的行符
换\n,所以小小的改会看一个很奇怪的果。