最有效地将 std:wstring 分配给 VCL UnicodeString

Assign std:wstring to VCL UnicodeString most effectively

我有一系列 std::wstring 对象需要显示,因此存储在各种 VCL 对象中。

我查看了 VCL String Assign() 函数的文档,最好是将 count 作为输入但找不到它的函数。

我现在做什么:

my_vcl_object->Caption = my_wstring_text.c_str() ;

根据我在文档中看到的内容,VCL String operator=()referenceString 作为输入。

这是否意味着目前:

  1. 在构造过程中使用 wchar_t 指针创建了一个(临时)VCL 字符串对象?
  2. 因此所有字符都被计算到 NULL 个字符
  3. 然后 Caption String 复制临时文件的内容。 String ?

或者是否有一个未记录的 operator=() for String 接受一个 wchar_t 指针并因此避免了第 1 步?

那么第 2 步呢?是否有一个 VCL 函数可以让我使用 wstring length() 作为输入以避免每次都计算字符数?这样Caption本质上就可以简单的复制内存。

Caption 是一个 String,在 C++Builder 2007 及更早版本中映射到 AnsiString,在 C++Builder 2009 中映射到 UnicodeString 和稍后。

=赋值运算符将整个String作为输入。所以是的,你的3点分析是正确的。在您的示例中,构建并复制了一个临时 String

然而,AnsiStringUnicodeString 都有一个接受 2 个参数作为输入的构造函数,一个指向字符数据的指针和一个长度,因此您可以构造临时 String显式使用多于 1 个参数,例如:

my_vcl_object->Caption = String(my_wstring_text.c_str(), my_wstring_text.length());