如何将字符串转换为其unicode转义?

时间:2014-02-13 20:14:43

标签: c++

我正在尝试将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编码器的示例,但是我无法使其正常工作

3 个答案:

答案 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));