Compare string对cin不起作用

Compare string doesnt work with cin

本文关键字:不起作用 cin string Compare      更新时间:2023-10-16

我正在解决一个微不足道的问题,但我想不出来。如果str1的开头是"simon说",程序应该输出"simon说"之后的部分。如果我像下面的代码一样运行它,它可以工作,但是如果我自己在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 says", "simon"将进入str1, "says"将进入str2。要读取整行,应该使用

std::getline()

使用cin >> str1时,如果为句子"Simon write something"打印str1,您将看到str1的值为"Simon"。

若要不将句子切到第一个空格,请将cin >> str1替换为getline(cin, str1)