cin.get和cin.getline的區別?
導讀:
最佳答案
問題一:
#include
#include
using namespace std;
void main(void)
{
string st ;
cout<<"Input st:";
getline(cin,st);
cout< }
上面這段代碼,如果輸入abc,那麼需要按兩次回車鍵才能顯示abc(在VC6中),因爲getline有三個參數,第三個參數是字符串的結束符,也就是當getline遇到這個結束符時,就不在接受輸入了,比如寫成 getline(cin,st,'s'); 即使輸入的是abcsabc 那麼也只會顯示 abc ,因此對於上面出現的情況,有人說getline默認情況下以回車('/n')作爲結束符,第一次按回車表示字符串結束,第二次按回車纔開始輸出。也有人說這是VC6的bug,我覺得前一種解釋比較合理,因爲:
如果你輸入abc(回車)abc,那麼程序會顯示abc,可見回車的確是函數默認的結束符。
同理1getline(cin,candybar[i].pinpai); 就是當輸入一串字符串後賦值給candybar[i].pinpai,然後再按二次回車才顯示在屏幕上!
問題二:
1.cin.getline是讀入一行字符,比如:
#include void main()
{
char str[20];
cout<<"Input :";
cin.getline(str,20);
cout< }
當輸入:abd cdrasdf g的時候就會輸出:abd cdrasdf g。
2.cin.get()第一個用法,是讀入一個字符。
#include void main()
{
char str;
cout<<"Input :";
str=cin.get();
cout< }
當你輸入“ABAF”的時候,只會顯示“A”,因爲只讀入了一個字符(空格也可以讀入)。
3.cin.get()第二個用法,也是輸入一行(同cin.getline()),但是區別就是,不輸出分隔符~
你的提問,應該是第三個用法
cin.clear();//清空輸入流
本文轉自
http://z.baidu.com/question/30390464.html?fr=qrl
最佳答案
問題一:
#include
#include
using namespace std;
void main(void)
{
string st ;
cout<<"Input st:";
getline(cin,st);
cout< }
上面這段代碼,如果輸入abc,那麼需要按兩次回車鍵才能顯示abc(在VC6中),因爲getline有三個參數,第三個參數是字符串的結束符,也就是當getline遇到這個結束符時,就不在接受輸入了,比如寫成 getline(cin,st,'s'); 即使輸入的是abcsabc 那麼也只會顯示 abc ,因此對於上面出現的情況,有人說getline默認情況下以回車('/n')作爲結束符,第一次按回車表示字符串結束,第二次按回車纔開始輸出。也有人說這是VC6的bug,我覺得前一種解釋比較合理,因爲:
如果你輸入abc(回車)abc,那麼程序會顯示abc,可見回車的確是函數默認的結束符。
同理1getline(cin,candybar[i].pinpai); 就是當輸入一串字符串後賦值給candybar[i].pinpai,然後再按二次回車才顯示在屏幕上!
問題二:
1.cin.getline是讀入一行字符,比如:
#include void main()
{
char str[20];
cout<<"Input :";
cin.getline(str,20);
cout< }
當輸入:abd cdrasdf g的時候就會輸出:abd cdrasdf g。
2.cin.get()第一個用法,是讀入一個字符。
#include void main()
{
char str;
cout<<"Input :";
str=cin.get();
cout< }
當你輸入“ABAF”的時候,只會顯示“A”,因爲只讀入了一個字符(空格也可以讀入)。
3.cin.get()第二個用法,也是輸入一行(同cin.getline()),但是區別就是,不輸出分隔符~
你的提問,應該是第三個用法
cin.clear();//清空輸入流
本文轉自
http://z.baidu.com/question/30390464.html?fr=qrl
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.