C++ std::string::compare() 与字符串运算符之间的不一致

Kee*_*a S 3 c++ string compare

鉴于下面的一段 C++ 代码

cout<<("100">"035")<<"\n";
cout<<("100"<"035")<<"\n";
string str = "100";
cout<<str.compare("035");
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是

0
1
1
Run Code Online (Sandbox Code Playgroud)

这意味着操作员的“100”<“035”但比较函数的“100”>“035”。这两者是否有任何已知的实现差异?

PS“100”>“035”肯定更有意义。

Jar*_*d42 6

C-String 文字(例如"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");
Run Code Online (Sandbox Code Playgroud)

"100"s是“等价于”的std::string("100")