gpt4 book ai didi

c++ - 与 std::memcmp 或 string::compare 进行子串比较?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:57 25 4
gpt4 key购买 nike

我想在另一个字符串中查找给定的字符串。可能的起始位置由先前的计算已知。示例:

int main()
{
std::string input("Foo Bar Hash Bang");
std::string keyword("Bar");

const char* inputStart = input.c_str() + 4; // at 'B'
std::cout << "memcmp=" << std::memcmp(inputStart, keyword.c_str(), keyword.length()) << "\n";

std::cout << "compare=" << input.compare(4, keyword.length(), keyword) << "\n";

return 0;
}

Ideone

两者是等价的吗?如果关键字长度超过起始位置的输入长度,则与 memcmp 的比较仍然是正确的。 strncmp 是更安全的方法吗?

最佳答案

它是安全且冗余的,如std::char_traits<char>::compare无论如何使用 memcmp在大多数标准库供应商上(我检查了 VC++ 和 GCC,它们分别使用 memcmp__builtin_memcmp)。

至于性能 - 它不会有太大变化。

最好坚持std::string::compare .

关于c++ - 与 std::memcmp 或 string::compare 进行子串比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181250/

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