gpt4 book ai didi

C++ - Haystack/Needle 字符串检查总是返回 false

转载 作者:行者123 更新时间:2023-11-28 02:41:16 24 4
gpt4 key购买 nike

我写了一个小方法来查看一个字符串是否包含另一个字符串。不过我只有一个小问题,它总是返回 false。

给定大海捞针是一个名为 salaryCheck 的字符串,其值为“10.1”,针是“.”。它总是返回 false。

根据我的理解,它应该返回 true,为了便于阅读,我首先将所有内容都放入字符 vector 中。然后我进入一个循环,检查第一个针字符是否与 haystack[i] 匹配。如果第一个 needle 字符与 haystack[i] 匹配,我将继续进入另一个循环,在该循环中我将所有从 haystack[i] 开始的 haystack 与完整的 needle 字符列表进行比较。

据我所知,这应该根据我给定的参数返回 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;
}

最佳答案

问题就在这里

        for (int i2 = i; i2 < needleChars.size(); i2++){

你应该在 0needleChars.size() 之间循环,或者 ii + needleChars.size() 。下面的 if 语句也需要调整; needlehaystack 的正确数组索引不会相同。

关于C++ - Haystack/Needle 字符串检查总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com