C++獲取字元cin,getchar,get,getline的區別

Roninwz發表於2017-10-10

原創作品,轉載請註明來源:http://www.cnblogs.com/shrimp-can/p/5241544.html

1.cin>>

1)最常見的是獲取輸入的一個字元或數字,如

int a,b;

cin>>a>>b;

注意:cin>>會自動過濾掉不可見字元(如空格 回車 tab等)。若不想過濾掉空白字元,可以用noskipws流進行控制。

如下程式,沒有過濾掉不可見字元,輸入的空格字元存入了input[1]中,也可輸出。

2)獲取輸入的字串,可以用陣列或string型別。如

char a[20];

cin>>a;

cout<<a<<endl;

或者string型別:

string s;

cin>>s;

cout<<s<<endl;

注意:遇到空格、回車等會結束獲取輸入的字串,後面的字串會過濾掉(存放在輸入流中)。如果後面還需要輸入字串,則會從前面存放的字串開始獲取。

遇空格、回車等結束。

po存放在了string中。

 

2.cin.get()

1)cin.get(字元變數名),用來接收字元,只獲取一個字元,可以接收空格,遇回車結束

2)cin.get(陣列名,接收字元數目),用來接收字串,可以接收空格,遇回車結束。

注意:陣列的最後一個字元會是‘\0’,設接收字元數目為n,如果輸入的字串大於等於n,則實際接收到的輸入是字串的前面n-1個字元,包括空格(不包括回車,遇到回車就結束了),會自動在後面增加一個‘\0’。

3)cin.get(),沒有引數,主要用於捨棄輸入流中不需要的字元,或者捨棄回車,即捨棄輸入流中的一個字元。

沒有用cin.get(),則後面的s會從輸入流中繼續讀入

有cin.get(),則h後面的s被省略了。

 

3.cin.getline()

實際是cin.getline(接收字串到m,接收個數n,結束字元)。接收一個字串,可以接收空格等,最後一個字元為‘\0’。結束符可以通過設定第三個引數自己設定,預設是回車。m不能為string型別。

注意:實際接收到的要比n少一個,因為最後一個字元為'\0'。

 

4.getline()

用於string類的。使用需包含標頭檔案#include<string>。getline(cin,string s),接收一個字串,可以接收空格、回車等

與cin.getline()的區別:1.cin.getline()接收輸入字串的是陣列,getline()是string型別。

                                    2.cin.getline()可以接收空格,但不能接收回車;getline()可以接收空格和回車

                                    3.cin.getline()會在陣列結尾是'\0',getline()不會

 

5.gets()

gets(m)用於string類的,需包含#include<string>。可以接收空格,遇回車結束。可用於多維陣列。

 

6.getchar()

 m=getchar(),需包含#include<string>

參考:

http://blog.csdn.net/jiangxinnju/article/details/20492453

相關文章