c++中cin的基本使用方法
一、最主要的使用方法cin>>
接收一個數字、字符、字符串。遇“空格”、“TAB”、“回車”都結束
比如:
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; main () { int a,b; cin>>a>>b; cout<<a+b<<endl; }</span></span>
輸出:11
(當中回車可替換成空格或者TAB鍵)
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; main () { char a[20]; cin>>a; cout<<a<<endl; }</span></span>輸入:kldjfllskjf
輸出:kldjfllskjf
輸入:jkljkl jkljkl //遇空格結束
輸出:jkljkl
二、cin.get()
使用方法1: cin.get(字符變量名)能夠用來接收字符
ch=cin.get(); 或者cin.get(ch);(兩種形式等價)
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; main () { char ch; ch=cin.get(); //或者cin.get(ch); cout<<ch<<endl; }</span></span>輸入:hglssf
輸出:h
使用方法2:cin.get(字符數組名,接收字符數目)用來接收一行字符串,能夠接收空格,enter鍵結束輸入
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; main () { char a[20]; cin.get(a,20); cout<<a<<endl; }</span></span>輸入:jkl jkl jkl
輸出:jkl jkl jkl
輸入:abcdeabcdeabcdeabcdeabcde (輸入25個字符)
輸出:abcdeabcdeabcdeabcd (接收19個字符+1個‘\0‘)
使用方法3: cin.get(字符數組名,接收字符數目,結束符)
讀取一行字符串,遇結束符停止讀入
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; main () { char a[20]; cin.get(a,20,‘g‘); cout<<a<<endl; return 0; } </span></span>輸入:kjhkjlhgjlajdflj
輸出:kjhkjlh
註意:當結束符為“ENTER”鍵時。即默覺得上述的使用方法2
可是兩種情況下都不會丟棄結束符:
比如:
接收字符情況:
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; int main() { char c1, c2; cin.get(c1); cin.get(c2); cout<<c1<<" "<<c2<<endl; // 打印兩個字符 cout<<(int)c1<<" "<<(int)c2<<endl; // 打印這兩個字符的ASCII值 return 0; } </span></span>
輸入:
a[Enter]
輸出:
a
97 10
【分析】會發現僅僅運行了一次從鍵盤輸入,顯然第一個字符變量取的’a‘,第二個變量取的是Enter(ASCII值為10),這是由於該函數不丟棄上次輸入結束時的Enter字符,所以第一次輸入結束時緩沖區中殘留的是上次輸入結束時的Enter字符。
接收字符串情況:<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> using namespace std; int main () { char ch, a[20]; cin.get(a, 5 , ‘d‘); cin>>ch; cout<<a<<endl; cout<<(int)ch<<endl; return 0; } </span></span>
輸入:
12345[Enter]
輸出:
1234
53
【分析】第一次輸入超長,字符串按長度取了"1234",而’5′仍殘留在緩沖區中。所以第二次輸入字符沒有從鍵盤讀入,而是直接取了’5′。所以打印的ASCII值是53(’5′的ASCII值)。
輸入
12d45[Enter]
輸出:
12
d
【分析】第二次輸出為d,說明自己定義結束符時不丟棄緩沖區中的結束符
三、getline()的使用方法使用方法1:cin.getline(數組名,長度,結束符)大體與 cin.get(數組名。長度。結束符)類似。
差別在於:
cin.get()當輸入的字符串超長時,不會引起cin函數的錯誤,後面的cin操作會繼續運行,僅僅是直接從緩沖區中取數據。可是cin.getline()當輸入超長時。會引起cin函數的錯誤。後面的cin操作將不再運行。
#include<iostream> usingnamespace std; int main () { char ch, a[20]; cin.getline(a, 5); cin>>ch; cout<<a<<endl; cout<<(int)ch<<endl; return0; }輸入:
12345[Enter]
輸出:
1234
-52
【分析】與cin.get()的樣例比較會發現,這裏的ch並沒有讀取緩沖區中的5,而是返回了-52。這裏事實上cin>>ch語句沒有運行。是由於cin出錯了。使用方法2:getline(cin,line),接收一行字符串輸入並存入字符串line中,按回車結束。
<span style="font-size:18px;"><span style="font-size:18px;">#include<iostream> #include<string> using namespace std; int main() { string line; getline(cin,line); cout<<line<<endl; return 0; }</span></span>輸入:liudandage nihaoa
輸出:liudandage nihaoa
c++中cin的基本使用方法