C 輸入 更新中

2021-08-27 00:09:42 字數 1565 閱讀 9905

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 ...