人生几何?

CharToByteLen - C++ Builder

2021-09-24  本文已影响0人  玄坴

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


字符串前面几个字符一共有多少个编码单元,过时的函数,需要用 CharToElementLen 代替

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

int __fastcall CharToByteLen(const System::AnsiString S, int MaxLen);
int __fastcall CharToByteLen(const System::UnicodeString S, int MaxLen);

参数:

返回值:


例子:
在 AnsiString 里面通常每个英文字符是一个 char,汉字是两个 char;在 UnicodeString 里面通常每个英文字符和常用汉字和符号是一个 char16_t,一些不常用的汉字和符号两个 char16_t:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString s = L"Hello玄坴";
    Memo1->Lines->Add(s);
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,1));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,2));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,3));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,4));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,5));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,6));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,7));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    UnicodeString s = L"土𪢴圭垚𡋣㙓";
    Memo1->Lines->Add(s);
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,1));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,2));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,3));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,4));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,5));
    Memo1->Lines->Add(Sysutils::CharToByteLen(s,6));
}

运行结果:

运行结果1 运行结果2

相关:


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

上一篇 下一篇

猜你喜欢

热点阅读