7

我对 C++ 中字符串的字母顺序有疑问。假设我有两个字符串:

    string x="asd123";
    string y="asd136";


我们可以将这些字符串与 < 或 > 运算符进行比较吗?例如:我们可以说

    if(x>y)
    cout<<".....";

这总是有效吗?谢谢。

4

2 回答 2

14

字符串按字典顺序(字典样式)进行比较,一个字符串是另一个字符串的较短子集,位于较长字符串之前。但这不一定是按字母顺序排列的;它是根据底层字符编码的。现在大多数系统都使用 ASCII,所以小写字母按顺序出现,大写字符按顺序出现,大写字符在小写字符之前出现。

于 2013-03-04T23:11:54.837 回答
9

是的,将std::strings 与std::string::operator>总是有效的比较。字符串按字典顺序进行比较。这意味着依次比较两个字符串的每个对应元素,直到找到两个不相等的元素,并且该排序决定了字符串的顺序。

字典顺序<std::basic_string. 也就是说,对于 a std::string,每个char都将使用 进行比较<。它只会比较那些chars 的值。就 C++ 而言,achar只是一个数值。这些值通过执行字符集映射到字符串文字中的字符(对于现代 C++ 编译器,它几乎总是至少与 ASCII 兼容)。

于 2013-03-04T23:01:38.190 回答