两个字符串如何比较

How are two strings compared?

本文关键字:何比较 比较 两个 字符串      更新时间:2023-10-16

我不知道如何形成这个问题,因为英语不是我的主要语言。

比较两个字符串背后的过程是什么?

例如,计算机在哪个逻辑上如何比较两个字符串?

#include <iostream>
#include <string>
int main()
{
    std::string s1 {"b"};
    std::string s2 {"abc"};
    if(s1 > s2)
    {
        std::cout << s1 << " > " << s2;
    }
    else std::cout << s2 << " > " << s1;
    return 0;
}

输出:b > abc

计算机如何提出此逻辑(即使它是正确的(。

我想象计算机逻辑将字符转换为整数,然后按大小比较它们,这里的情况并非如此,因为如果是

b > abc会被视为98 > 97 + 98 + 99这是不正确的。

比较逻辑由字符串的字符特征指定,对于std::stringstd::char_traits<char>::compare,这反过来又指定了"词典比较"。每个字符都根据其数值进行比较,该数值由执行字符集的编码给出。在您的平台上,'b' > 'a'是正确的,因此s2比较不到s1 .