有没有办法在不考虑顺序的情况下比较两个字符串的内容?即
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));
一种方法是使用
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";
}