【发布时间】:2011-04-19 13:48:29
【问题描述】:
谈到国际化和 Unicode,我是个白痴的美国程序员。这是交易。
#include <string>
using namespace std;
typedef basic_string<unsigned char> ustring;
int main()
{
static const ustring my_str = "Hello, UTF-8!"; // <== error here
return 0;
}
这会引发意外的抱怨:
cannot convert from 'const char [14]' to 'std::basic_string<_Elem>'
也许我今天喝错了咖啡。我该如何解决?我可以保留基本结构吗:
ustring something = {insert magic incantation here};
?
【问题讨论】:
-
不回答您的问题,但请阅读 i18n 上的这篇文章:joelonsoftware.com/articles/Unicode.html
-
您可能需要提供自己的
char_traits<unsigned char>专业化。 AFAIK,<string>仅提供char和wchar_t的专业化。 -
使用 std::string 会不会有问题?我猜您使用的是 utf-8,因此单个字符最终可能是负面的(可以这么说)。如果您消除 const 并将字符串类型转换为 unsigned char* 它将允许分配,但它看起来并不漂亮。
-
@Daryl:我使用的 libxml 传递了一堆
unsigned char*,所以我认为 std::string 是不行的
标签: c++ string unicode internationalization