简单来说,如果输入始终处于相同的情况(这里是小写),并且字符始终为ASCII,那么是否可以使用string :: compare可靠地确定两个字符串的字母顺序?
因此,对于stringA.compare(stringB)
,如果结果为0,则它们相同;如果结果为负数,则stringA按字母顺序排在stringB之前;如果结果为正数,则stringA按字母顺序排在stringB之后?
只要两个字符串中的所有字符都是相同的大小写,并且两个字符串仅包含字母,这将起作用。
compare
是一个成员函数,因此您需要像这样调用它:
stringA.compare(stringB);
string
是使用默认参数实例化模板类basic_string
的结果:basic_string<char, char_traits<char>, allocator<char> >
。在basic_string
模板中,比较函数将使用char_traits<TChar>::compare
函数来确定结果值。std::string
,顺序将是实现(编译器)的默认字符代码的顺序,通常是ASCII顺序。如果您需要不同的顺序(比如想要将{ a, á, à, â }视为等效),则可以使用自己的char_traits<>
实现实例化basic_string
,并提供不同的compare
函数指针。是,
如果比较的字符串相等,则该成员函数返回0;如果第一个不匹配的字符在对象中比比较字符串小,则返回负值;如果在对象中比比较字符串大,则返回正值。
对于字符串对象,字符比较的结果仅取决于其字符代码(即ASCII代码),因此结果具有一定的字母或数字排序意义。
C和C++语言的规范保证了词法顺序,'A' < 'B' < 'C' ... < 'Z'。小写字母同样如此。
文本数字的排序也是有保证的:'0' < ... < '9'。
在处理多种语言时,许多人会创建一个字符数组。该数组将被搜索以查找字符。与比较字符不同,比较索引。
string::compare
仅适用于较低的 ASCII(0-127)。 - Matthieu M.