以下是一段C++代码:
cout<<("100">"035")<<"\n";
cout<<("100"<"035")<<"\n";
string str = "100";
cout<<str.compare("035");
这段代码的输出结果是:
0
1
1
这意味着,按照运算符,“100”小于“035”,但按照比较函数,“100”大于“035”。这两者之间是否存在已知的实现差异?
附言:显然,“100”大于“035”更有意义。
C字符串字面值(例如"100"
)会将自己与指针进行比较。
std::string
的比较会按照词典顺序比较内容。
如果您想要一致的结果:
using namespace std::string_literals;
std::cout << ("100"s > "035"s)<<"\n";
std::cout << ("100"s < "035"s)<<"\n";
std::string str = "100"s;
std::cout << str.compare("035");
"100"s
相当于 std::string("100")
。