【发布时间】:2011-06-17 02:49:01
【问题描述】:
我正在使用 QString 存储字符串,现在我需要将这些字符串(转换为 UTF-8 编码)存储在 POD 结构中,如下所示:
template < int N >
struct StringWrapper
{
char theString[N];
};
要从 QString 转换原始数据,我这样做:
QString str1( "abc" );
StringWrapper< 20 > str2;
strcpy( str2.theString, str1.toUtf8().constData() );
现在是问题。我注意到,如果我从普通字符串转换,它工作正常:
QString str( "abc" );
std::cout<< std::string( str.toUtf8().constData() ) << std::endl;
将产生作为输出:
abc
但如果我使用一些特殊字符,例如:
QString str( "Schöne Grüße" );
std::cout<< std::string( str.toUtf8().constData() ) << std::endl;
我得到一个这样的垃圾:
Gr\xC3\x83\xC2\xBC\xC3\x83\xC2\x9F
我显然遗漏了一些东西,但究竟出了什么问题?
其他问题
UTF-8 编码字符的最大大小是多少?我读了 here 它是 4 个字节。
【问题讨论】: