c 中如何輸入含有空格的字串

2021-09-27 01:50:18 字數 1252 閱讀 2793

使用cin輸入指定字串的時,如果該字串中不包含空格鍵的話,是不會有什麼問題的,但是如果包含空格鍵的話,那就不行了。

對於這種情況的話,該如何解決呢?

這時候就得用到cin.get()和cin.getline()

一、當使用cin.get()和cin.getline()輸入乙個字元時:

char c;

我已知有四種種方式:

1、 c=  cin.get();

2、cin.get(c);

3、cin.getline(c);

4、c = cin.getline();

二、當使用cin.get()和cin.getline()輸入乙個字元陣列時:

char c[20];

我已知有兩種方式:

1、cin.get(c,20);

2、cin.getline(c,20);

三、cin.get()和cin.getline()輸入的異同點

相同點:cin.get()和cin.getline()在輸入時,只會在遇到回車符時認為字串結束,在遇到空格時還會繼續。

不同點:cin.getline()在遇到回車符時,結束字串輸入,丟棄回車符。但是cin.get()在遇到回車符,在會保留回車符在輸入佇列裡。

四、注意:當採用cin.get()的方式輸入char c[20]和char b[20]時:

由於第一次呼叫後,換行符將留在輸入佇列中.

因此第二次呼叫是,get()讀取的第乙個字元將是換行符,此時,get()認為讀取到行尾,而未發現認可讀取內容。

解決方案:

使用不帶任何引數的變體cin.get(),讀取下乙個字元。即,使用cin.get()跳過這個換行符,使得下一次cin.get()能夠從換行符之後開始讀取。

cin.get(c,20);

cin.get();               

cin.get(b,20); 

拼接用法:

cin.get(c,20)和cin.get()可以拼接使用,即,在一行內實現連個函式:

cin.get(c,20).get();

可以這樣做的依據是:

cin.get(c,20)返回的是乙個cin物件,改物件又可以被接著用來呼叫cin.get()函式。

另外,同樣的原理,cin.getline()也可以同時讀取兩行:

cin.getline(c,20).getline(2,20);

把連續的兩行分別讀入到了name1,name2中,這和呼叫兩次cin.getline()效果是相同的。

c c 字串讀入含有空格

字串帶空格讀入在某些場合用的很多,題主總結了三中比較好用的方法 sring型別不能讀取空格,但是getline cin,string 可以,字串以回車 n 結束讀取。c語言中,常使用gets str 同樣以回車 n 結束。使用scanf c str 這個是以字元c為結束符,那麼修改下scanf n ...

如何去掉C 字串中的所有空格

字串行數trim 可以去掉字串前後的空格,如 c code 1 2 string mystring this is a test console.writeline mystring.trim 輸出的結果為 使用字串的replace 函式可以去掉字串中間及前後的空格 c code 1 2 strin...

字串 如何輸入一行帶有空格的字串

對於char char s 100 cin.getline s,1000 第二個引數表示允許輸入的最大長度while cin.getline s,1000 輸入輸出樣例 輸入 he llo 輸出 he llo 對於string string s getline cin,s while getline...