c 的幾種輸入方法

2022-06-29 06:12:12 字數 3634 閱讀 8048

c++中幾個輸入函式的用法和區別    cin、cin.get()、cin.getline()、getline()、gets()、getchar()

1、cin

1、cin.get()

2、cin.getline()

3、getline()

4、gets()

5、getchar()

1、cin>>

用法1:最基本,也是最常用的用法,輸入乙個數字:

#include

using namespace std;

main ()

{int a,b;

cin>>a>>b;

cout《輸入:2[回車]3[回車]

輸出:5

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

#include

using namespace std;

main ()

{char a[20];

cin>>a;

cout《輸入:jkljkljkl

輸出:jkljkljkl

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

輸出:jkljkl

2、cin.get()

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

#include

using namespace std;

main ()

{char ch;

ch=cin.get(); //或者cin.get(ch);只能獲取乙個字元

cout《輸入:jljkljkl

輸出:j

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

#include

using namespace std;

main ()

{char a[20];

cin.get(a,20); //有些類似getline。可以輸入多個單詞,中間空格隔開。

cout《輸入:jkl jkl jkl

輸出:jkl jkl jkl

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

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

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

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

#include

using namespace std;

main ()

{char m[20];

cin.getline(m,5);   //與上面基本相同。

cout《輸入: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 ()

{char m[3][20];

for(int i=0;i<3;i++)

{cout<<"\n請輸入第"kskr1

請輸入第2個字串:

kskr2

請輸入第3個字串:

kskr3

輸出m[0]的值:kskr1

輸出m[1]的值:kskr2

輸出m[2]的值:kskr3

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

#include

#include

using namespace std;

main ()

{string str;

getline(cin,str);

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

輸出:jkljkljkl

輸入:jkl jfksldfj jklsjfl

輸出:jkl jfksldfj jklsjfl

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

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

#include

#include

using namespace std;

main ()

{char m[20];

gets(m); //不能寫成m=gets();

cout《輸入:jkljkljkl

輸出:jkljkljkl

輸入:jkl jkl jkl

輸出:jkl jkl jkl

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

#include

#include

using namespace std;

main ()

{char m[3][20];

for(int i=0;i<3;i++)

{cout<<"\n請輸入第"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() //接受乙個字元,需包含「#include」

#include

using namespace std;

main ()

{char ch;

ch=getchar(); //不能寫成getchar(ch);

cout《輸入:jkljkljkl

輸出:j

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

C 加速輸入的幾種方法

在c 中,cin和cout的速度其實不並不慢,c 中的流的io速度相當的快,其速度與初始設定的快取區大小和硬碟的io速度有關。但在c 中,為了相容c的io scanf和printf cin和cout被設定為與c的io同步,這樣導致cin和cout的速度不如scanf和printf快。另外,在預設情況...

c 輸入的幾種方式

學c 有一段時間了,還沒有進入到oop的階段,想把基礎打牢一點,所以就從最基本的語法開始看起。因為有c語言的基礎,所以剛開始感覺學起來也不是很難,大部分也都能理解,直到我遇到下面這個困惑,我才開始注意到c 中關於輸入的一些問題。也許這些問題很基礎,但是對於想真正學好這門語言的人來說,就必須注意這些細...

C 中輸入字串的幾種方法

c 中幾個輸入函式的用法和區別 cin cin.get cin.getline getline gets getchar 1 cin 1 cin.get 2 cin.getline 3 getline 4 gets 5 getchar 1 cin 用法1 最基本,也是最常用的用法,輸入乙個數字 in...