2015-07-21 66 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)