C 字串輸入詳解!

2022-06-28 16:42:10 字數 3804 閱讀 8832

cin、cin.get()、cin.getline()、getline()、gets()、getchar()

1. cin>>

用法一:最常用、最基本的用法,輸入乙個數字: 

#include using

namespace

std;

intmain ()

​輸入:

2[回車]3

[回車]

輸出:5

用法二:接受乙個字串,遇「空格」、「tab」、「回車」都結束

#include using

namespace

std;

intmain ()

​輸入:jkljkljkl

輸出:jkljkljkl

​輸入:jkljkl jkljkl

//遇空格結束,所以不能輸入多個單詞

輸出:jkljkl

2. cin.get()

用法一:cin.get(字元變數名)可以用來接收字元

#include using

namespace

std;

int main ()

​輸入:jljkljkl

輸出:j

用法二:cin.get(字元陣列名,接收字元數)用來接收一行字串,可以接收空格

#include using

namespace

std;

intmain ()

​輸入:jkl jkl jkl

輸出:jkl jkl jkl

​輸入:abcdeabcdeabcdeabcdeabcde (輸入25個字元)

輸出:abcdeabcdeabcdeabcd (接收19個字元+1個'

\0')

用法三:cin.get(無引數)沒有引數主要是用於捨棄輸入流中的不需要的字元,或者捨棄回車,彌補cin.get(字元陣列名,接收字元數目)的不足.

#include using

namespace

std;

intmain( )

輸入abcdefghi

輸出abcdefghi

輸入abcde

輸出abcd

#include

using

namespace

std;

intmain( )

輸入abcdefghi

輸出abcdefghi

3.cin.getline()

cin.getline() // 接受乙個字串,可以接收空格並輸出

#include using

namespace

std;

intmain ()

​輸入:jkljkljkl

輸出:jklj

接受5個字元到m中,其中最後乙個為'\0

',所以只看到4個字元輸出;

​如果把5改成20:

輸入:jkljkljkl

輸出:jkljkljkl

​輸入:jklf fjlsjf fjsdklf

輸出:jklf fjlsjf fjsdklf

//延伸:

實際上有三個引數,cin.getline(接受字串到m,接受個數5,結束字元)

//當第三個引數省略時,系統預設為'\0' 是『/n』吧。

//如果將例子中cin.getline()改為cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk

當用在多維陣列中的時候,也可以用cin.getline(m[i],20

)之類的用法:

​#include

#include

using

namespace

std;

​int

main ()

​cout

cout

<<"

輸出m[

"<"

]的值:

"​請輸入第1個字串:

kskr1

​請輸入第2個字串:

kskr2

​請輸入第3個字串:

kskr3

​輸出m[

0]的值:kskr1

輸出m[

1]的值:kskr2

輸出m[

2]的值:kskr3

4. getline()

getline() // 接受乙個字串,可以接收空格並輸出,需包含「#include

#include#include

using

namespace

std;

main ()

​輸入:jkljkljkl

//vc6中有個bug,需要輸入兩次回車。

輸出:jkljkljkl

​輸入:jkl jfksldfj jklsjfl

輸出:jkl jfksldfj jklsjfl

​和cin.getline()類似,但是cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函式

5. gets()

gets()// 接受乙個字串,可以接收空格並輸出,需包含「#include

#include#include

using

namespace

std;

main ()

​輸入:jkljkljkl

輸出:jkljkljkl

​輸入:jkl jkl jkl

輸出:jkl jkl jkl

​類似cin.getline()裡面的乙個例子,gets()同樣可以用在多維陣列裡面:

​#include

#include

using

namespace

std;

​int main ()

​cout

cout

<<"

輸出m[

"<"

]的值:

"​請輸入第1個字串:

kskr1

​請輸入第2個字串:

kskr2

​請輸入第3個字串:

kskr3

​輸出m[

0]的值:kskr1

輸出m[

1]的值:kskr2

輸出m[

2]的值:kskr3

​自我感覺gets()和cin.getline()的用法很類似,只不過cin.getline()多乙個引數罷了;

​這裡順帶說明一下,對於本文中的這個kskr1,kskr2,kskr3的例子,對於cin>>也可以適用,原因是這裡輸入的沒有空格,如果輸入了空格,比如「ks kr jkl[回車]」那麼cin就會已經接收到3個字串,「ks,kr,jkl」;

再如「kskr 1[回車]kskr 2[回車]」,那麼則接收「kskr,1,kskr」;這不是我們所要的結果!而cin.getline()和gets()因為可以接收空格,所以不會產生這個錯誤;

6.getchar()

getchar()//接受乙個字元,需包含「#include

#includeusing

namespace

std;

intmain ()

​輸入:jkljkljkl

輸出:j​//

getchar()是c語言的函式,c++也可以相容,但是盡量不用或少用;

字串 scanf函式輸入字串詳解

除了在定義字元陣列時初始化外,還可以通過scanf從鍵盤輸入字串。下面寫乙個程式 用 scanf 給字元陣列賦值不同於對數值型陣列賦值。前面講過,給數值型陣列賦值時只能用 for 迴圈乙個乙個地賦值,不能整體賦值。而給字元陣列賦值時可以直接賦值,不需要使用迴圈。此外從鍵盤輸入後,系統會自動在最後新增...

c 字串輸入

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

C 字串輸入

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