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


原創作品,轉載請注明來源: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM