一尘不染

在Linux中是否有任何将wstring或wchar_t *转换为UTF-8的内置函数?

linux

我想将wstring转换为UTF-8编码,但是我想使用Linux的内置函数。

在Linux中 ,* 是否有任何内置函数可以 通过简单的调用 转换wstring或转换wchar_t*为UTF-8 ? *

例:

wstring str = L"file_name.txt";
wstring mode = "a";
fopen([FUNCTION](str), [FUNCTION](mode)); // Simple invoke.
cout << [FUNCTION](str); // Simple invoke.

阅读 600

收藏
2020-06-07

共1个答案

一尘不染

C ++语言标准没有显式编码的概念。它仅包含“系统编码”的不透明概念,为此,它wchar_t是“足够大”的类型。

要将不透明的系统编码转换为显式的外部编码,必须使用外部库。选择的库将是iconv()(from
WCHAR_TUTF-8),它是Posix的一部分,可在许多平台上使用,尽管WideCharToMultibyte可以保证在Windows上这些函数可以产生UTF8。

C ++ 11 以的形式添加新的UTF8 文字std::string s = u8"Hello World: \U0010FFFF";。这些已经在UTF8中了,但是wstring除了通过我描述的方式之外,它们无法与不透明接口。

2020-06-07