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