我正在尝试将char
数组转换为unicode-escaped char
数组。
说我有一个字符串“ C:/İmüp”。
如何将其转换为 C:/ \ u0130m \ u00fcp 作为char
数组或const char
?
(我通过ExpandEnvironmentStrings()将“C:/Helloİmüp”作为char数组,然后我需要将其写入带有unicode转义的文件中)
我尝试了类型转换,std::stringstream
和ASCII表,查找了C ++ json编码器的示例,但是我无法使其正常工作
答案 0 :(得分:4)
试试这个:
std::wstring env;
// fill env with data from ExpandEnvironmentStringsW()...
std::stringstream ss;
for (std::wstring::iterator iter = env.begin(); iter != env.end(); ++iter)
{
if (*iter <= 127)
ss << (char) *iter;
else
ss << "\\u" << std::hex << std::setfill('0') << std::setw(4) << (int)*iter;
}
std::string str = ss.str();
// use str as needed...
答案 1 :(得分:2)
首先使用系统默认代码页将其从char数组转换为wchar_t数组。
然后编写遍历wchar_t数组的简单代码,并使用代码&gt; = 128转义每个Unicode字符。
P.S。更好的是,将您的应用程序设为Unicode,以便使用Unicode版本的ExpandEnvironmentStrings。这样你只需要转义字符串,如果某个环境字符串包含一个不适合char
系统默认代码页的字符,你的应用程序仍然可以正常工作。
答案 2 :(得分:-1)
试试这段代码:
string yourAsciiString = "this is test";
string yourUnicodeString = System.Text.Encoding.Unicode.GetString(System.Text.Encoding.ASCII.GetBytes(yourAsciiString));