String Unicode到char*c++;11 < >我想知道是否有任何方法将Unicode代码转换成C++ 11中的字符串或字符。 我一直在尝试使用扩展的拉丁unicode字母Á(作为一个示例),它具有以下编码:
信:ÁString Unicode到char*c++;11 < >我想知道是否有任何方法将Unicode代码转换成C++ 11中的字符串或字符。 我一直在尝试使用扩展的拉丁unicode字母Á(作为一个示例),它具有以下编码:,string,c++11,unicode,char,String,C++11,Unicode,Char,信:Á Unicode:0x00C1 UTF8文字:\xc3\x81 如果硬编码为: const char* c = u8"\u00C1"; 但是,如果我得到的字节序列是短的,那么我怎么做才能得到char*或std::string‘Á’ 编辑,解决方案: 我终于能够这样做了,如果有人需要,下面是解决方案: std::wstring ws; for(short input : inputList) { wchar_t wc(input); ws += wc; } std::wst
Unicode:0x00C1
UTF8文字:\xc3\x81 如果硬编码为:
const char* c = u8"\u00C1";
但是,如果我得到的字节序列是短的,那么我怎么做才能得到char*或std::string‘Á’
编辑,解决方案:
我终于能够这样做了,如果有人需要,下面是解决方案:
std::wstring ws;
for(short input : inputList)
{
wchar_t wc(input);
ws += wc;
}
std::wstring_convert<std::codecvt_utf8<wchar_t>> cv;
str = cv.to_bytes(ws);
std::wstring-ws;
for(短输入:inputList)
{
wchar_t wc(输入);
ws+=wc;
}
std::wstring_转换cv;
str=cv.to_字节(ws);
感谢您的评论,他们非常有用。问题在于
char
只有一个字节长度,而unicode字符需要两个字节的大小
您仍然可以将其视为char*,但必须记住,您不是在处理ascii字符串(将有零)
您可能必须切换到
wchar\u t
问题在于char
只有一个字节长度,而unicode字符需要两个字节的大小
您仍然可以将其视为char*,但必须记住,您不是在处理ascii字符串(将有零)
您可能必须切换到
wchar\u t
C++11标准包含codevt\u utf8
,它在一些内部字符类型(如果编译器有,请尝试char16\u t
,否则wchar\u t
)和UTF-8编码之间进行转换。C++11标准包含code>VT utf8
,它在某些内部字符类型(如果编译器有,请尝试char16\u t
,否则wchar\u t
)和UTF-8编码之间进行转换。使用我已经使用wchar\u t加载unicode字节,并使用wstring对其进行压缩,但我仍然无法从中检索正常字符*或std::字符串,有什么想法吗?如果你使用这一技巧:只需使用auto
use我已经使用wchar\u t加载unicode字节,并使用wstring对其进行压缩,但我仍然无法从中检索正常的char*或std::string,有什么想法吗?如果你使用这一技巧:只需使用auto
我知道使用wchar\u t我可以检索它,但我仍然需要转换为char*或std::string。无论如何,感谢您的回复。我知道使用wchar\u t我可以检索它,但我仍然需要转换为char*或std::string。无论如何,谢谢你的回复