1. 程式人生 > >c++中cin的基本使用方法

c++中cin的基本使用方法

取數據 lin nbsp ring abc pop 發現 con hit

一、最主要的使用方法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>
輸入:5[回車]6[回車]
輸出: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的基本使用方法