以这种方式比较字符串是一种好的风格吗?

时间:2016-09-29 09:42:52

标签: c++ comparison operator-overloading c-strings c++17

我想到要在.cpp文件中使用:

namespace
{
    bool operator==(char const* const a, char const* const b) noexcept
    {
        return !::std::strcmp(a, b);
    }
}

这是好风格吗?

编辑:

我认为有品味的c ++ 1z方式可以使用新的std::string_view类进行比较。

1 个答案:

答案 0 :(得分:11)

你不能class enumchar*作为其操作数,这意味着你无法改变他们使用的行为内置类型。

  

当运算符出现在表达式中,并且其操作数中至少有一个具有类类型或枚举类型时,则使用重载决策来确定要在其签名与其匹配的所有函数中调用的用户定义函数以下:

我建议您使用提供overload operatorstd::string内容std::strcmp()。然后你可以避免使用$all = [$arr1, $arr2, $arr3]; foreach ($all as $a) { if ($a['feature code'] === "ADM1") $result = $a; } print_r($result); 和这种类型的c风格的字符串函数。如果确实需要c风格的字符串,可以使用operator==在必要时将其转换回来。