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
相關文章
- C/C++輸入函式 scanf() gets() getline() cin.getline() cin.get() getchar()C++函式
- 關於C++中字串輸入get與getline的區別C++字串
- C++面向行輸入:get()與getline()C++
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- linux 中 awk語句 getline 和 enxt的區別Linux
- 關於while(cin)回車結束 和 while(cin)與cin.get()結合時發現的問題While
- GET和POST的區別?
- POST 和 GET 的區別
- post與get的區別
- GET 與 POST 的區別
- GET和POST的區別
- get與post的區別?
- GET 和 POST 的區別
- JavaScript獲取給定字元的unicodeJavaScript字元Unicode
- http和https的區別/get和post的區別HTTP
- GET與POST的真正區別
- post、get的區別總結
- GET與POST區別
- get和post區別
- c++任意變數型別獲取相關C++變數型別
- get與post的請求區別
- get與post的區別總結
- http獲取get引數過濾HTTP
- C/C++獲取變數型別並輸出C++變數型別
- get請求和post請求的區別
- getline()
- pt-get和dpkg區別?
- POST與GET請求區別
- C++獲取陣列的長度C++陣列
- product.get( 獲取一個產品的資訊 )
- c與c++的區別C++
- HTTP協議類POST 和GET的區別HTTP協議
- springdatajpa 中get××方法與find××方法的區別Spring
- http請求之get和post的區別HTTP
- get和post請求的區別(面試)面試
- Linux基礎命令---get獲取ftp檔案LinuxFTP
- 獲取sql完整指令碼,get_fulltext.shSQL指令碼
- [C++] cin, cout, clog, cerr中的c是什麼意思C++
- 面試之 get 和 post 區別面試