我对 C++ 中字符串的字母顺序有疑问。假设我有两个字符串:
string x="asd123";
string y="asd136";
我们可以将这些字符串与 < 或 > 运算符进行比较吗?例如:我们可以说
if(x>y)
cout<<".....";
这总是有效吗?谢谢。
字符串按字典顺序(字典样式)进行比较,一个字符串是另一个字符串的较短子集,位于较长字符串之前。但这不一定是按字母顺序排列的;它是根据底层字符编码的。现在大多数系统都使用 ASCII,所以小写字母按顺序出现,大写字符按顺序出现,大写字符在小写字符之前出现。
是的,将std::string
s 与std::string::operator>
总是有效的比较。字符串按字典顺序进行比较。这意味着依次比较两个字符串的每个对应元素,直到找到两个不相等的元素,并且该排序决定了字符串的顺序。
字典顺序<
对std::basic_string
. 也就是说,对于 a std::string
,每个char
都将使用 进行比较<
。它只会比较那些char
s 的值。就 C++ 而言,achar
只是一个数值。这些值通过执行字符集映射到字符串文字中的字符(对于现代 C++ 编译器,它几乎总是至少与 ASCII 兼容)。