亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問該如何用cin輸入string卻不會因為空格而接受不到后面的字符?

請問該如何用cin輸入string卻不會因為空格而接受不到后面的字符?

catspeake 2021-12-10 11:07:51
如題,請問如何用cin輸入string卻不會因為空格而接受不到后面的字符?在線等!
查看完整描述

2 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

方法:std::string myWords;

std::getline(std::cin, myWords, '\n');

std::cout << myWords << std::endl;

運行程序,在界面輸入 I create a new virtual world!回車,界面輸出 I create a new virtual world! 完全正確。

這是因為cin 遇空格停止識別,雖然輸入很長一串字符,但是cin在第一個遇到第一個空格就停止輸入,所以,cin只把 I 寫入myWords。

cin 遇空格或換行,會停止識別,如果你打算輸入的字符串中帶1個或多個空格,則采用getline把停止識別的符號設置為‘\n’(即換行符),就能正確輸入輸出了。

用cin>>str;這種方法來接收字符串那么錄入的str不能包含空格,否則它會按照空格將整個字符串切分成若干段。如果要是想輸入帶空格的字符串那就要用到getline()這個函數了。

擴展資料

cin>>輸入字符串注意事項:

1、在默認情況下,運算符“>>”將跳過空白符,然后讀入后面的與變量類型相對應的值。因此,給一組變量輸入值時可用空白符(空格、回車或Tab鍵)將鍵入的數值間隔開。

2、當輸入字符串時,運算符“>>”的作用是跳過空白,讀入后面的非空白字符,直到遇到另一個空白字符為止,并在串尾放一個字符‘\0’。

cin讀取數據也是從緩沖區中獲取數據,緩沖區為空時,cin的成員函數會阻塞等待數據的到來,一旦緩沖區中有數據,就觸發cin的成員函數去讀取數據。

cin.get()讀取單個字符

cin.get()從輸入緩沖區讀取單個字符時不忽略分隔符,直接將其讀取

cin.get()的返回值是int類型,成功:讀取字符的ASCII碼值,遇到文件結束符時,返回EOF,即-1,Windows下標準輸入輸入文件結束符為Ctrl+z,Linux為Ctrl+d。cin.get(char var)如果成功返回的是cin對象,因此可以支持鏈式操作,如cin.get(b).get(c)。



查看完整回答
反對 回復 2021-12-13
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

cin是istream類型對象。cin對象將標準輸入看作字節流,cin對輸入的解釋方式取決于>>操作符后的參數數據類型,對于string類型,cin會將輸入流中第一個非空白(空格、制表、換行等)字符和下一個空白字符之間的字節讀取出來,存儲到string對象中,因此會出現問題中所述的情況。但是還有一個簡單的string io操作,那就是getline。例如string line; getline(cin,line); 只要輸入第一個字符不是回車,最后一個字符是回車,這之間的內容都會被讀取到line中,這些內容就可以是包含空格的字符串了。

查看完整回答
反對 回復 2021-12-13
  • 2 回答
  • 0 關注
  • 1435 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號