从来没想过这些细节问题,但看了Zweily的第一篇小品文,发现原来还有这样的差别,于是以现有知识写了个程序,不管他的什么mfc。

#include<iostream>
using namespace std;

int main(){
    cout
<<"weicong";
    cout
<<'\n';
    cout
<<"weicong";
    cout
<<'\r';
    cout
<<"weicong";
    cout
<<'\n';
    cout
<<"weicong";
    cout
<<'\r';
    cout
<<"weicong";
    system(
"dir>out.txt");
    
return 0;
 }


结果输出三行weicong
怎么回事呢?原来回车符只是把光标移到当前行的最前面,
所以前两个就等于只有一个,
三四个也等于一个

这样的话'\r'后的weicong覆盖了前面的weicong。就输出了三个。

下面我们来验证一下:

 1#include<iostream>
 2using namespace std;
 3
 4int main(){
 5    cout<<"weicong";
 6    cout<<'\n';
 7    cout<<"weicong";
 8    cout<<'\r';
 9    cout<<"cong";
10    cout<<'\n';
11    cout<<"weicong";
12    cout<<'\r';
13    cout<<"weicong";
14    system("dir > out.txt");
15    system("pause");
16    return 0;
17 }

第二行显示congong,覆盖的猜测是正确的。

额外知识:

Chr(13)回车符
Chr(10)换行符
(感觉vb里用到过)
’\n’是换行符,’\r’是回车符。它们相对应的ASCII码分别是:0x0A和0x0D。