做<和>在C ++字符串上反映字母顺序?

时间:2013-03-04 23:00:46

标签: c++ string

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

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


我们可以将这些字符串与<或者>运营商?例如:我们可以说

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

这总是有效吗?感谢。

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:6)

是的,将std::stringstd::string::operator>进行比较始终有效。比较字符串lexicographically。这意味着将依次比较两个字符串中的每个对应元素,直到找到两个不相等的元素,并且该排序确定字符串的顺序。

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