我在當天回信功能,有什麼返回一個布爾值,如果第一個字符串包含第二個字符串:
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
現在我真的不明白,你想用的字符串數組是什麼,但我認爲,這一點,就可以得到所需的輸出。
[std :: string :: find](http://en.cppreference.com/w/cpp/string/basic_string/find) – chris 2012-07-29 14:25:46
你確定你的問題是關於C而不是C++嗎?你列出的代碼是一個C++代碼,而不是C.對於C++,你確實可以使用std :: string :: find – YePhIcK 2012-07-29 14:29:01
它的C++我不知道爲什麼標題沒有顯示「++」感謝你的快速回復 更新:添加「++」:)謝謝 – alex 2012-07-29 14:31:34