如何使用 C++ 将 UTF-16 转换为 UTF-8?

How to convert UTF-16 to UTF-8 using C++?

我使用韩语。例如。 '안녕하세요'.

消息可以插入普通字符串class。对吗?

但就我而言。如果我有文件 :: 'test.txt' {in :: '안녕하세요'}

并读取 'test.txt',以及 getline(),

(test.txt file read)
string temp;
getline(file pointer, temp);
cout<<temp;

现在我使用 cout。哒哒!消息已损坏!

我知道这是 WideCharacter 问题。所以我尝试了 MultiByteToWideChar 方法。

好的。效果不错。

但我不想要这个

最后我想读取宽字符文件,并保存 'string' 变量。

所以,我为你提问。

如何在 'Not change message' 时将 UTF-16 (widecharcter/wstring) 转换为 UTF-8 (multibyte/string)?

::我想要这种风格

wstring temp = "안녕하세요"

字符串 temp2 = convert_to_string(temp);

->

string temp2 = "안녕하세요"

如评论中所述,有关如何进行转换的代码,请参阅

但是假设你有 wstring 来保存你的韩语字符串,你就避免了区分 UTF-16-LE 和 UTF-16-BE 的麻烦,你可以很容易地找到每个的 Unicode 代码点字符串中的韩文字符。所以你的问题归结为找到任何代码点的 UTF-8 表示。这并不难,请参阅 https://www.rfc-editor.org/rfc/rfc3629 (also Wikipedia https://en.wikipedia.org/wiki/UTF-8 的第 3 页)。

示例代码在 Convert Unicode code points to UTF-8 and UTF-32