我有例如下面的一段代碼:字符串輸入複製的文本
string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;
其實沒有什麼不對的代碼,但如果我粘貼在「輸入」一些文本進入命令提示符,它會自動將一些複製的文本填充到「整數」中。我該如何解決這個問題?
編輯:我可以鍵入文本只要我想,但是當我複製文本它出錯了。我不知道爲什麼。
我有例如下面的一段代碼:字符串輸入複製的文本
string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;
其實沒有什麼不對的代碼,但如果我粘貼在「輸入」一些文本進入命令提示符,它會自動將一些複製的文本填充到「整數」中。我該如何解決這個問題?
編輯:我可以鍵入文本只要我想,但是當我複製文本它出錯了。我不知道爲什麼。
我想,你的文本包含空格。所以,std::cin
不會在這裏工作。改爲使用std::getline
。
std::string str;
std::getline(std::cin, str);
還有第三個參數std::getline
- 分隔符。默認情況下,它是新的一行字符。
如果您的文本確實包含新的行字符,則此操作無效。你有兩個選擇:
std::getline
)從用戶輸入(std::cin
)的線把它作爲std::getline
我其實已經試過了,但仍然是同樣的問題 – Badshah 2012-08-06 10:14:49
@Badshah - 然後你的文本里面有新的行。看我的編輯。 – 2012-08-06 10:17:18
string str;
int i;
cout<<"input:";
getline(cin, str);
// you want to read the whole line, operator>> will read until whitespace
cout<<"integer:";
cin>>i;
您的複製文本是否包含行返回? – ereOn 2012-08-06 10:09:54
你可以給你提示你在提示符下「粘貼」的樣本嗎?請使用正確和不正確的輸入會話編輯您的問題。 – 2012-08-06 10:10:22
@ ereOn:是的它的確如此 – Badshah 2012-08-06 10:13:40