此问题已在此处有答案:
Comparing strings lexicographically(3个答案)
5天前关闭。
我正在使用比较运算符(<,>,=)比较两个字符串。
“a”<“B”的输出在这种情况下是0。
#include<iostream>
using namespace std;
int main()
{
cout<<("a" < "a")<<endl;
cout<<("b" < "a")<<endl;
cout<<("a" < "b")<<endl;
return 0;
}
输出-
0
1
0
但是为什么当我只比较“a”<“b”时,输出会改变呢?
#include<iostream>
using namespace std;
int main()
{
// cout<<("a" < "a")<<endl;
// cout<<("b" < "a")<<endl;
cout<<("a" < "b")<<endl;
return 0;
}
输出-1
这是SS-
[1st输出] https://i.stack.imgur.com/rHqzM.png
[2nd输出] https://i.stack.imgur.com/IrUEx.png
我现在很困惑!!pls任何人都可以帮助我这一点
1条答案
按热度按时间5fjcxozz1#
你不是在用定义良好的不等式运算来比较
std::string
对象。您正在将string literals与未指定的内存位置进行比较。因此,<
不会返回您期望的结果:无前缀字符串文字的类型是
const char[N]
,其中N是字符串[..]的大小,包括null终止符。