美文网首页
AnsiStrLComp - C++ Builder

AnsiStrLComp - C++ Builder

作者: 玄坴 | 来源:发表于2021-08-30 11:00 被阅读0次

    C++ Builder 参考手册System::SysutilsAnsiStrLComp


    比较两个字符串前面 MaxLen 个 WideChar,使用当前的地区和语言,区分大小写。

    头文件:#include <System.SysUtils.hpp>
    命名空间:System::Sysutils
    函数原型:

    int __fastcall AnsiStrLComp(System::WideChar * S1, System::WideChar * S2, unsigned MaxLen);
    

    参数:

    • S1:要比较的字符串1,System::WideChar 类型;
    • S2:要比较的字符串2,System::WideChar 类型;
    • MaxLen:比较的 WideChar 个数,这个函数并不管 \0 结束符在哪里,\0 和普通字符一样对待,不作为结束比较的条件,如果字符串长度不够 MaxLen 个 WideChar,这个函数会穿过 \0 继续比较,一直到 MaxLen 个 System::WideChar 结束

    返回值:

    • 0: S1==S2
    • >0: S1>S2
    • <0: S1<S2
    • 比较两个字符串,使用当前的地区和语言,区分大小写,区分大小写的语言不限于英语,例如 āωπ 是小写,对应的大写是 ĀΩΠ;
    • 汉字比较大小,也是和地区相关的,中国大陆默认排序按照汉语拼音对应的英语字母顺序排列的,而中国的港澳台地区默认按照汉字的笔画数顺序排列的,例如:
      • 大陆:"玄" > "坴",因为按照汉语拼音 "xuan" > "lu" 这样比较的;
      • 港澳台:"玄" < "坴",因为按照汉字笔画数 5 < 8 这样比较的;
      如果读音或笔画数相等,不同的汉字也是不等的,具体怎样比较大小不在本文叙述范围之内;
    • 这个函数的执行规则和 AnsiCompareStr 是相同的,区别是这个函数只比较前面 MaxLen 个 WideChar;
    • 这个函数的参数都是 System::WideChar 类型的了,虽然函数名以 Ansi 开头,实际上是 UNICODE (UTF-16) 编码。参数为 char 或 AnsiString 类型的函数都移到 System.AnsiStrings.hpp 这个头文件里面了,参数为 char 或 AnsiString 类型的函数都看作过时的函数,不建议使用了;
    • 问题1:使用这个函数 Borland 编译器会出现使用过时了的函数的警告 (属于误报),即使参数是 System::WideChar * (或 wchar_t *) 类型,而 clang 32 和 clang 64 编译器在使用 System::WideChar * (或 wchar_t *) 类型的参数不会有警告;
    • 问题2:AnsiStrLIComp 会穿过 \0 结束符继续比较, 直到 MaxLen 个 WideChar 结束;函数 std::wcsncmp 和 std::_lwcsncoll 遇到 \0 结束符会结束比较,但是需要用 std::_wsetlocale 指定地区和语言,不是使用当前的地区和语言。

    相关:


    C++ Builder 参考手册System::SysutilsAnsiStrLComp

    相关文章

      网友评论

          本文标题:AnsiStrLComp - C++ Builder

          本文链接:https://www.haomeiwen.com/subject/empdahtx.html