C++ std::string::compare() 和 string 运算符之间的不一致性

3

以下是一段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”更有意义。
1个回答

6

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")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接