從來沒想過這些細節問題,但看了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。