比较字符串的内容而不考虑其顺序

问题描述 投票:0回答:1

有没有办法在不考虑顺序的情况下比较两个字符串的内容?即

edcc
cdce
是真的,因为每个字母的频率和字母本身匹配

例如,以下内容应该是正确的。

std::string s1 = "Hello World";
std::string s2 = "World Hello";

以下似乎等同于

EXPECT_EQ(s1, s2)
,但有什么方法可以验证内容吗?

EXPECT_THAT(s1, ContainerEq(s2));

以下内容不起作用,因为它似乎只适用于向量、数组等容器……

EXPECT_THAT(s1, UnorderedElementsAre(s2));

我也试过下面的void attempt

std::vector<char> vec1(s1.begin(), s1.end());
std::vector<char> vec2(s2.begin(), s2.end());

EXPECT_THAT(vec1, UnorderedElementsAreArray(vec2));
c++ googlemock
1个回答
3
投票

一种方法是使用

std::multiset
std::set

if(std::multiset<char>(s1.begin(), s1.end()) == std::multiset<char>(s2.begin(), s2.end()))
{
    std::cout << "same";
}
else 
{
    std::cout<<"not same";
}
© www.soinside.com 2019 - 2024. All rights reserved.