c 字串的輸入的思考

2022-08-23 01:36:08 字數 1101 閱讀 8678

字串的輸入,是學習c++的乙個重點,也是乙個極富有細節意味的知識點,如果你不了解這些細節,你可能會在寫程式時犯錯而一臉懵逼不知所措。

與此同時,我們要了解c++緩衝區的概念,程式的輸入都建有乙個緩衝區。輸入的過程大概是這樣的,一次輸入結束,鍵盤會向緩衝區存入資料,而相應的讀取函式會從緩衝區讀取,我們來用具體的**來演示一下緩衝區具體怎麼工作;

仔細看上述**,我的**裡定義了四個char型別的字串,並且有cin輸入,但是當我們輸入乙個具有空格的字串時,直接輸出了而忽略了人為的繼續輸入,原因是什麼呢?

現在仔細考慮輸入流的概念,當我們輸入第一串字串時,我個人理解的是,cin此時沒有起作用,我們只是簡單的把字元(包括空格,tab,換行)存到輸入流裡,當我們按下enter(換行)停止鍵盤向輸入流輸送資料,然後cin輸入函式開始從輸入流取資料。

對於cin來說,它會直接從緩衝區讀取,當遇到空格,tab,換行符時,結束輸入,正如上述**所示,我們的cin>>a從輸入流提取資料,hereisa提取完後,遇到乙個空格,提取結束,然後是cin>>b,cin>>c,cin>>d同樣的操作。於是我們看到上述的輸出。

cin.get()和cin.getline()兩個函式及其相似,大多數情況我們可以將其二者混用,它們的輸入可以輸入空格,tab,但遇到空格時結束輸入,他們的區別是 getline剔除換行符,而cin.get()則保留換行符。我們看一段**的測試及結果:

通過上述兩段**,我們看到,對於cin.get()來說,他是保留空格符的,也就是說,他會把空格符保留下來,並且它本身遇到空格符就停止了,然後保留下來的空格符就被下乙個讀取函式讀取了,等價於下個函式提取資料時直接遇到換行符,就直接結束了;而cin.getline()則不同,它別具一格,它英俊瀟灑,它遇到換行符時它直接結束,可以把它看成狼人殺的獵人,它死了,它還要帶走乙個,然後它帶走了空格符,它把空格符剔除了,下面的輸入絲毫不受影響。

這些c++方面的輸入輸出,應該說是最基本的知識,但是基本功不紮實,怎麼能寫出高魯棒的**呢?

C 字串的輸入

cin cin.get cin.getline getline gets getchar 1.cin 用法一 最常用 最基本的用法,輸入乙個數字 include using namespace std main 輸入 2 回車 3 回車 輸出 5 用法二 接受乙個字串,遇 空格 tab 回車 都結束...

c 字串輸入

知道好多人初學者會像我一樣看不懂那些長篇的輸入介紹 也不想看 這裡有直接的 寫法!以前只會用gets 結果它被c 11標準給刪了,洛谷裡用不了。因為用得少記不住,每次都得去查一遍,這裡就直接列幾個我已知的字串的輸入方法,注意事項寫在注釋,初學應該是足夠用了,後續會不斷補充。當然cin也可以 讀到空格...

C 字串輸入

1.使用cin輸入 char a 20 cin a 遇到空字元就停止輸入,即只能輸入單個單詞。2.使用getline輸入 char a 20 cin.getline a,20 該函式有兩個引數,第乙個是陣列的名稱,第二個是要讀取的字元數。遇到換行符或者讀取完指定數目的字元停止讀取。在儲存字串時,用空...