gpt4 book ai didi

c++ - std string 通过迭代器比较两个子字符串

转载 作者:行者123 更新时间:2023-11-30 02:50:18 28 4
gpt4 key购买 nike

这是子字符串 (2) int compare (size_t pos, size_t len, const string& str,
size_t subpos, size_t sublen) const;
如果我有成对的 begin, end 迭代器,我比较两个子字符串的最佳选择。

这是我必须做的吗,似乎有点不对:

str1.compare(begin2 - str2.begin(), end2 - begin2, str2,
begin1 - str1.begin(), end1 - begin1)

最佳答案

如果要比较子字符串是否相等,可以使用 std::equal相反,像这样:

bool res = ((end1-begin1) == (end2-begin2))
&& std::equal(begin1, end1, begin2, end2);

您需要在调用 std::equal 之前比较长度是否相等,以避免超出第二个范围的末尾。这个问题在 C++14 中得到了修复——你可以简单地做到这一点

bool res = std::equal(begin1, end1, begin2, end2);

如果您按字典顺序比较子串,您可以使用std::lexicographical_compare ,像这样:

bool firstIsLess = std::lexicographical_compare(begin1, end1, begin2, end2);

关于c++ - std string 通过迭代器比较两个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570108/

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