两个字符串如何比较
How are two strings compared?
我不知道如何形成这个问题,因为英语不是我的主要语言。
比较两个字符串背后的过程是什么?
例如,计算机在哪个逻辑上如何比较两个字符串?
#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::string
是std::char_traits<char>::compare
,这反过来又指定了"词典比较"。每个字符都根据其数值进行比较,该数值由执行字符集的编码给出。在您的平台上,'b' > 'a'
是正确的,因此s2
比较不到s1
.
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- catch框架有没有办法比较流或文件
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 智能指针作为无序映射键,并通过引用进行比较
- 比较if语句中的数组值和int值
- 对于循环变体比较
- 是在STL中使用的COMP比较器是从未更改的STL比较比较STL中的对象
- 如何比较比较两个图像的轮廓