在C ++中,std :: string类实现comparison operators。
以下代码打印AAA
#include <iostream>
using namespace std;
int main() {
if("9">"111")
cout << "AAA";
else
cout << "not AAA";
return 0;
}
并且此代码段打印not AAA
:
#include <iostream>
using namespace std;
int main() {
if("9">"111")
cout << "AAA";
else
cout << "not AAA";
if("99">"990")
cout << "BBB";
return 0;
}
为什么会这样?
答案 0 :(得分:5)
您正在比较静态持续时间存储上某处的字符串文字的地址,并且它具有未指定的行为。
像这样使用std::string
#include <iostream>
using namespace std;
int main() {
if(std::string("9") > std::string("111"))
cout << "AAA";
else
cout << "not AAA";
return 0;
}
修改强>
使用using namespace std::literals;
可以使用&#34; 9&#34; s&#34; 111&#34; s。
谢谢@ sp2danny