在AnsiString(65001)中有类似C++的类型吗?我想将它用于应用程序和DLL之间的互操作。
发布于 2015-01-09 00:23:45
具体来说,在C++Builder (与Delphi使用相同的RTL )中,有一个AnsiStringT模板类,它提供了与Delphi的AnsiString(N)类型相同的功能:
template <unsigned short CP>
class RTL_DELPHIRETURN AnsiStringT : public AnsiStringBase其中CP是所需的代码页。
RTL的UTF8String和RawByteString类型只是这个功能的别名:
德尔菲:
type
UTF8String = type AnsiString(65001);
RawByteString = type AnsiString($ffff);C++Builder:
typedef AnsiStringT<65001> UTF8String;
typedef AnsiStringT<65535> RawByteString;发布于 2015-01-08 23:41:12
std::string保证充当char的容器,而char保证为1字节,这似乎与AnsiString的描述相匹配。
尽管注意,如果确实需要,可以在std::string中强制使用一些多字节Unicode字符,但没有编译器强制保证每个逻辑字符由1字节编码。在C++中,除了编写自己的类之外,没有一种简单的方法来实现这一点。
但是,为了实现互操作性,您可能需要使用原始cstring (char*)。
https://stackoverflow.com/questions/27851488
复制相似问题