AnsiStrLastChar - C++ Builder

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrLastChar


返回指向字符串当中最后一个字符的指针

头文件:#include
命名空间:System::Sysutils
函数原型:

System::WideChar * __fastcall AnsiStrLastChar(System::WideChar * P);

参数:

  • P:字符串

返回值:

  • 如果 P 为 NULL 或空字符串 L"",将返回不正确的结果,此时无法根据返回值判断函数的执行情况,所以在使用这个函数之前要确定字符串必须非空;
  • 如果 P 不是空字符串 (至少有1个字符),返回指向 S 里面最后一个字符的指针;
    • 由 2 个 char16_t 组成的代理对 (4 个字节的字符) 可以正确的返回,请参考 UnicodeString 和 UTF16 编码,这时候返回的就是倒数第 2 个 char16_t 而不是最后一个 char16_t;
    • 返回的指针直接指向 P 占用的内存,如果 P 指向临时内存,返回的指针指向的内存被释放,可能会被其他程序占用而无法得到正确的值;
  • 另外一个类似的函数 AnsiLastChar 空字符串返回 NULL,非空返回最后一个字符;
  • 这个函数的参数都是 System::WideChar 类型的了,虽然函数名以 Ansi 开头,实际上是 UNICODE (UTF-16) 编码。参数为 char 或 AnsiString 类型的函数都移到 System.AnsiStrings.hpp 这个头文件里面了,参数为 char 或 AnsiString 类型的函数都看作过时的函数,不建议使用了;
  • 问题:使用这个函数 Borland 编译器会出现使用过时了的函数的警告 (属于误报),即使参数是 System::WideChar * (或 wchar_t *) 类型,而 clang 32 和 clang 64 编译器在使用 System::WideChar * (或 wchar_t *) 类型的参数不会有警告,如果必须使用 Borland 编译器并且很在意这个警告,可以使用 AnsiLastChar 代替。

相关:

  • System::Sysutils::AnsiLastChar
  • System::Sysutils::AnsiStrLastChar
  • System::Sysutils::AnsiPos
  • System::Sysutils::AnsiStrPos
  • System::Sysutils::AnsiStrScan
  • System::Sysutils::AnsiStrRScan
  • System::Sysutils::CharToElementIndex
  • System::Sysutils::CharToElementLen
  • System::Sysutils::ElementToCharIndex
  • System::Sysutils::ElementToCharLen
  • System::Sysutils

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrLastChar

你可能感兴趣的:(AnsiStrLastChar - C++ Builder)