2015-07-21 67 views
0

我正在處理一個微不足道的問題,但我無法弄清楚。如果str1的開頭是「simon說」,程序應該在「simon說」之後放出部分。如果我像下面的代碼運行它,它可以工作,但是如果我自己輸入了字符串cin >> str1;,它不會。有人給我一個小費嗎? (是的,這是一個卡蒂問題)比較字符串不適用於cin

int main() 
{ 
string str1("simon says write a program"); 
//cin >> str1; 
string str2 ("simon says"); 
if (str1.compare(0,10,str2,0,10) == 0){ 
    cout << str1.substr(11,str1.size()); 
} 
return 0; 
} 
+1

使用'的std ::函數getline()''cin'明智讀取串詞。 –

+1

'>>'提取空白分隔的標記。這不是你正在尋找的結構。 –

+0

哦,上帝,我這麼笨。謝謝。我完全忘了 –

回答

4

這是因爲std :: cin得到空格分隔的字符串。如果你嘗試使用

std::cin << str1; 
// something here 
std::cin << str2; 

閱讀從標準輸入一個字符串,就會進入「西蒙說」,「西蒙」將在其中str1土地和「雲」會去STR2。要閱讀一整行,你應該使用

std::getline() 
1

對於使用cin >> str1,如果打印的句子STR1「西蒙寫的東西」,你會看到str1的值爲「西蒙」。

爲了不切句子的第一個空間,替換cin >> str1通過getline(cin, str1)