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

