c++用iconv将字符串转成unicode的字符数组类型
时间: 2024-03-25 14:40:07 浏览: 60
可以使用以下代码将字符串转换成unicode字符数组:
```
#include <iconv.h>
// 转换函数
bool convertUTF8ToUnicode(const char* src, size_t srcLen, wchar_t* dst, size_t dstLen)
{
iconv_t cd = iconv_open("WCHAR_T", "UTF-8");
if (cd == (iconv_t)-1)
{
return false;
}
char* inBuff = const_cast<char*>(src);
size_t inBytesLeft = srcLen;
char* outBuff = reinterpret_cast<char*>(dst);
size_t outBytesLeft = dstLen * sizeof(wchar_t);
int res = iconv(cd, &inBuff, &inBytesLeft, &outBuff, &outBytesLeft);
iconv_close(cd);
if (res == -1)
{
return false;
}
return true;
}
int main()
{
std::string str = "Hello, 世界";
wchar_t unicodeStr[128] = { 0 };
bool success = convertUTF8ToUnicode(str.c_str(), str.size(), unicodeStr, 128);
if (success)
{
// 输出unicode字符数组
for (int i = 0; i < wcslen(unicodeStr); ++i)
{
wcout << unicodeStr[i] << endl;
}
}
return 0;
}
```
其中,`convertUTF8ToUnicode` 函数使用了 `iconv` 库,将 `src` 中的 UTF-8 编码字符串转换成 `wchar_t` 类型的 unicode 字符数组 `dst`。在主函数中,我们可以通过调用该函数将 `std::string` 类型的字符串 `str` 转换成 `wchar_t` 类型的 unicode 字符数组,并输出每个字符。
阅读全文