我正在研究一个小问题,但是我无法弄清楚。如果str1的开头是“ simon say”,则程序应在“ simon say”之后放出一部分。如果我像下面的代码一样运行它,则可以,但是如果我自己在cin >> str1;上输入字符串,则不会。有人给我小费吗? (是的,这是一个凯蒂问题)

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;
}

最佳答案

这是因为std :: cin获得了空格分隔的字符串。如果您尝试使用以下命令从标准输入中读取字符串

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


您将输入“ simon说”,“ simon”将进入str1,“ says”将进入str2。要阅读整行,您应该使用

std::getline()

10-04 21:54
查看更多