我想将wstring转换为UTF-8编码,但是我想使用Linux的内置函数。
在Linux中 ,* 是否有任何内置函数可以 通过简单的调用 转换wstring或转换wchar_t*为UTF-8 ? *
wstring
wchar_t*
例:
wstring str = L"file_name.txt"; wstring mode = "a"; fopen([FUNCTION](str), [FUNCTION](mode)); // Simple invoke. cout << [FUNCTION](str); // Simple invoke.
C ++语言标准没有显式编码的概念。它仅包含“系统编码”的不透明概念,为此,它wchar_t是“足够大”的类型。
wchar_t
要将不透明的系统编码转换为显式的外部编码,必须使用外部库。选择的库将是iconv()(from WCHAR_T到UTF-8),它是Posix的一部分,可在许多平台上使用,尽管WideCharToMultibyte可以保证在Windows上这些函数可以产生UTF8。
iconv()
WCHAR_T
UTF-8
WideCharToMultibyte
C ++ 11 以的形式添加新的UTF8 文字std::string s = u8"Hello World: \U0010FFFF";。这些已经在UTF8中了,但是wstring除了通过我描述的方式之外,它们无法与不透明接口。
std::string s = u8"Hello World: \U0010FFFF";