我在那天写了一个函数,如果第一个字符串包含第二个字符串,它会返回一个布尔值:
bool contains(const std::string & str, const std::string substr)
{
if(str.size()<substr.size()) return false;
for(int i=0; i<str.size(); i++)
{
if(str.size()-i < substr.size()) return false;
bool match = true;
for(int j=0; j<substr.size(); j++)
{
if(str.at(i+j) != substr.at(j))
{
match = false;
break;
}
}
if(match) return true;
}
return false;
}
我已经测试了一段时间,它似乎工作。它用蛮力搜索,但我尽量优化。
使用此方法,您可以执行以下操作:
std::string main_str = "Hello world!";
std::string sub_str = "ello";
std::string sub_str2 = "foo";
bool first = contains(main_str, sub_str); //this will give you true
bool second = contains(main_str, sub_str2); //this will give you false
现在我真的不明白,你想要什么字符串数组,但我认为,有了这个,你可以获得所需的输出。