我认为如果我在 C++ 中使用“">”和“
if("aa" > "bz") cout<<"Yes";
这不会打印任何内容,这就是我需要的,但是如果我输入
if("aa" > "bzaa") cout<<"Yes";
这将打印“是”,为什么会发生这种情况?或者我应该使用其他方法按字典顺序比较字符串?
比较std::string
-就像那样will工作。但是您正在比较字符串文字。要进行比较,您需要使用它们初始化 std::string 或使用 strcmp:
if(std::string("aa") > std::string("bz")) cout<<"Yes";
这是 C++ 风格的解决方案。
或者:
if(strcmp("aa", "bz") > 0) cout<<"Yes";
编辑(感谢康拉德·鲁道夫的评论):事实上,在第一个版本中,只有一个操作数应该显式转换,因此:
if(std::string("aa") > "bz") cout<<"Yes";
将再次按预期工作。
编辑(感谢 churill 的评论):从 c++14 开始,您可以使用字符串文字:
if("aa"s > "bz") cout<<"Yes";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)