我试图了解C ++字符串上的“ <”运算符,并尝试了一些测试用例。我意识到我认为应该表现相同的两个代码给出了不同的结果。以下是代码,这是什么原因?
string s="test";
string k="tes";
cout<<(s<k)<<endl; //returns false so it prints 0
cout<<("test"<"tes")<<endl; // returns true so it prints 1
(s < k)
如您所愿比较字符串的值。
("test" < "tes")
当编译器决定将其指针排列在内存中时,将指针与字符串文字的开头进行比较。因此,根据使用的编译器和设置,该比较可能返回0或1,并且两种结果均正确。这种比较实际上是没有意义的。
比较这些字符串文字的“ C方式”为strcmp("test", "tes")
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句