【发布时间】:2015-01-08 23:34:48
【问题描述】:
C++ 中是否有像 Delphi 中那样的 AnsiString(65001) 类型?我想将它用于应用程序和 DLL 之间的互操作。
【问题讨论】:
-
我猜这表示 Windows 代码页 65001 中的窄字符字符串,这是严重支持一半的 UTF-8 代码页。只需使用
std::string并记住它是 UTF-8。 -
@Deduplicator 你确定吗? pastebin.com/siaV0ytN
-
@Deduplicator: “只要使用
std::string,记住它是UTF-8” ← 你说std::string是UTF-8。它不是 UTF-8。它也不是 not UTF-8,但也不是 UTF-8。 -
您应该使用
std::string来处理8 位字符串,并且您可以通过两者的c_ptr()转换为AnsiString或从AnsiString转换。关键是AnsiString<>知道它的内容是什么代码页,而std::string不知道;您也应该存储该信息。包含代码页、std::string和转换方法的复合类型将是一个好方法。 -
多少“喜欢”
AnsiString你需要这个假设的 C++ 类型吗?这种类型有很多方面。你提到互操作——这是否意味着应用程序在 Delphi 中,并且你想用 C++ 编写一个接收和返回AnsiString值的 DLL?这是一个愚蠢的差事。或者你的意思是你想要一个仅 C++ 的类型,当分配给协作类型时,它会在代码页之间自动转换?你可以为此做点什么。或者你只是说你想要一个可以保存 UTF-8 字符的字符串类型?请edit您的问题更准确地说明您真正需要什么。
标签: c++ delphi visual-c++