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