- AnsiStrLastChar - C++ Builder
- C++ Builder 的字符串类型、字符类型、字符编码
- TInterfacedPersistent::AfterCons
- TInterfacedPersistent::QueryInte
- TInterfacedPersistent::~TInterfa
- TInterfacedPersistent::TInterfac
- TThread::NameThreadForDebugging
- TThread::Suspended - C++ Builder
- TThread::Terminate - C++ Builder
- TInterfacedObject - C++ Builder
C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrLastChar
返回指向字符串当中最后一个字符的指针
头文件:#include <System.SysUtils.hpp>
命名空间: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
- <cstdlib>
C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiStrLastChar
网友评论