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

xdnvmnnf  于 2023-03-14  发布在  其他
关注(0)|答案(1)|浏览(104)

有没有一种方法可以在不考虑顺序的情况下比较两个字符串的内容?例如,edcccdce为真,因为每个字母的频率与字母本身匹配
例如,下面的情况应该是正确的。

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

下面的代码看起来与EXPECT_EQ(s1, s2)等效,但是有没有办法只验证其内容?

EXPECT_THAT(s1, ContainerEq(s2));

下面的方法不起作用,因为它似乎只适用于向量、数组等容器。

EXPECT_THAT(s1, UnorderedElementsAre(s2));

我还尝试了以下无效尝试

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

EXPECT_THAT(vec1, UnorderedElementsAreArray(vec2));
nkcskrwz

nkcskrwz1#

一种方法是使用std::multisetstd::set

if(std::multiset<char>(s1.begin(), s1.end()) == std::multiset<char>(s2.begin(), s2.end()))
{
    std::cout << "same";
}
else 
{
    std::cout<<"not same";
}

相关问题