我寫了一個小方法來查看一個字符串是否包含另一個字符串。 雖然我只有一個小問題,但它總是返回false。C++ - Haystack/Needle字符串檢查總是返回false
鑑於haystack是一個名爲salaryCheck的字符串,值爲「10.1」,針爲「。」。它總是返回false。
根據我的理解,它應該返回true,我首先將所有內容都放入字符向量中以供讀取。然後我進入一個循環,在這個循環中,我檢查第一針字符是否匹配乾草堆[i]。 如果第一針字符與haystack [i]匹配,我繼續進入另一個循環,在那裏我將haystack [i]開始的所有乾草堆與完整的針字符列表進行比較。
據我所知,這應該返回true與我給出的參數。
這裏是我的代碼:
bool contains(std::string& haystack, std::string needle){
if (haystack.size() < needle.size())
return false;
bool returnValue = false;
std::vector<char> haystackChars;
std::vector<char> needleChars;
for (char c : haystack)
haystackChars.push_back(c);
for (char c : needle)
needleChars.push_back(c);
for (int i = 0; i < haystackChars.size() && !returnValue; i++){
if (needleChars[0] == haystackChars[i])
for (int i2 = i; i2 < needleChars.size(); i2++){
if (needleChars[i2] == haystackChars[i2])
returnValue = true;
else{
returnValue = false;
break;
}
}
}
return returnValue;
}
你爲什麼要編寫自己的函數?爲什麼不'string :: find'或['search'](http://en.cppreference.com/w/cpp/algorithm/search)? – dyp 2014-09-18 15:57:10
爲什麼你通過(非const)引用傳遞一個字符串,而另一個值?你爲什麼要將他們的角色複製到矢量中?你爲什麼使用'for'循環來做到這一點?還有更多的問題......我建議你在[CodeReview](http://codereview.stackexchange.com)上發佈這段代碼,以便獲得有關可以改進的一些技巧。 – dyp 2014-09-18 15:58:45
這似乎是一個很好的學習機會。 – 2014-09-18 15:59:08