AnsiString in C++?

AnsiString in C++?

本文关键字:C++ in AnsiString      更新时间:2023-10-16

C++有没有像德尔福这样的AnsiString(65001)类型?我想将其用于应用程序和 DLL 之间的互操作。

std::string保证充当char s的容器,char保证正好是1个字节,这似乎与AnsiString的描述相匹配。

尽管请注意,如果您确实愿意,您始终可以在 std::string 中强制使用一些多字节 Unicode 字符,但编译器无法强制保证每个逻辑字符按 1 字节编码。除了编写自己的类之外,没有简单的方法来C++强制执行这一点。

为了互操作性,你可能希望使用原始字符串(char*)。

在 C++Builder 中(它使用与 Delphi 相同的 RTL),有一个AnsiStringT模板化类,它提供与 Delphi 的 AnsiString(N) 类型相同的功能:

template <unsigned short CP>
class RTL_DELPHIRETURN AnsiStringT : public AnsiStringBase

其中CP是所需的代码页。

RTL 的 UTF8StringRawByteString 类型只是此功能的别名:

德 尔 福:

type
  UTF8String = type AnsiString(65001);
  RawByteString = type AnsiString($ffff);

C++建造者:

typedef AnsiStringT<65001> UTF8String;
typedef AnsiStringT<65535> RawByteString;