cin
讀取乙個單詞,遇空白(空格、製表符、回車)停止讀取
char a[10];
cin >> a;//輸入abcd efg
cout
<< a;//輸出abcd
getline()、get()
讀取行輸入,遇換行符停止讀取
隨後getline()
丟棄換行符,get()
將換行符保留在輸入佇列中
char a[10];
cin.getline(a,10);//輸入abcd efg
cout
<< a;//輸出abcd efg
getline()
以換行符確定行尾,但不儲存換行符,相反,用空字元代替換行符
char a[10];
char b[10];
cin.get(a,10);//輸入abcd efg
cin.get(b, 10);
cout
<< a << endl;//輸出abcd efg
cout
<< b << endl;//輸出空行
因為get()
將換行符保留在輸入佇列中,輸入第一行後,換行符在佇列中,當成b的輸入了,所以輸入第一行回車後不會再有輸入b的機會了,此時b儲存了上一輸入末尾的換行符。
要實現兩行正常輸入的話,我們需要在第一次輸入後加一行cin.get()
,讀取第一行輸入末尾的換行符,此時就可以正常輸入第二行內容了,不會直接cout.
char a[10];
char b[10];
cin.get(a,10);//輸入abcd efg
cin.get();
cin.get(b, 10);//輸入gh
cout
<< a << endl;//輸出abcd efg
cout
<< b << endl;//輸出gh
getline()使用起來簡單,但是get()更容易查錯:檢查下一輸入字元,如果是換行符,說明已讀取整行,否則說明該行中還有其他輸入。這樣便於判斷停止讀取的原因是已經讀取了整行還是陣列已填滿。同時輸入數字和字串容易遇到問題:
char a[10];
int c;
cin >> c;
cin.getline(a,10);//沒有輸入機會
cout
<< c << endl;
cout
<< a << endl;//輸出空行
輸入數字後留有乙個換行符在輸入佇列中,換行符進入下一次輸入,getline()
讀到換行符,輸出空行。解決方法同上,加入一行cin.get()
,或者先輸入字串再輸入數字。
也可以將呼叫拼接:cin>>c
換成(cin>>c).get()
C 類(持續更新中。。。)
假定csomething是乙個類,執行下面這些語句之後,記憶體裡建立了 6 個csomething物件。1 2 3 4 5 6 7 csomething a csomething b 2 csomething c 3 csomething ra b csomething d b csomething...
C 中的輸入問題
1.cin 這個函式在遇到空格 回車 tab都表示輸入結束2.變數 cin.get 輸入乙個字元3.cin.get 字串變數,變數大小 cin.getline 字串變數,變數大小 兩者類似 4.getline 輸入一行字串函式的話,遇到空格就不會返回了,遇到回車才返回 getline cin,str...
c 中輸入與輸出
在c語言中,我們通常會使用 scanf 和 printf 來對資料進行輸入輸出操作。在c 語言中,c語言的這一套輸入輸出庫我們仍然能使用,但是 c 又增加了一套新的 更容易使用的輸入輸出庫。例1 簡單的輸入輸出 示例 include using namespace std int main int ...