【发布时间】:2021-02-22 14:20:51
【问题描述】:
我正在尝试比较字符串,其中字符串仅由数值组成。
我将自己的operator < 定义为
bool operator<(const string &s1, const string &s2)
{
if(s1.size() != s2.size()) return s1.size() < s2.size();
return s1 < s2; // I don't want this to use mine
}
在最后一个 return 语句中,我希望 < 曾经是 C++ 库定义的那个。如何强制程序执行此操作?
【问题讨论】:
-
不要为
std::string写operator <。相反,请创建自己的命名函数/仿函数并使用它。 -
我不确定这个运算符是否能满足您的要求,即使您解决了重载问题(例如,将“0001”与“10”进行比较)。
-
更好的是,如果您正在处理一种受约束的字符串(所有字符都是数字),那么它不是是一个简单的
std::string。编写一个包装字符串的类,并检查 c'tor 中的约束。那么operator<不会与任何东西冲突,因为它已经接受了MyString参数。
标签: c++ string comparison string-comparison