如何在Visual C++中使用UTF8编码

3
我需要将下面的C#代码转换为C++代码。
    public static byte[] StrToByteArray(string str)
    {
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        return encoding.GetBytes(str);
    }

我在这个网站上找到了UTF8Encoding的C++代码,从中创建了以下代码。

    void StrToByteArray(string unicodeString)
    {
        UTF8Encoding^ utf8 = gcnew UTF8Encoding;
        array<Byte>^encodedBytes = utf8->GetBytes( unicodeString );
    }

但是这让我遇到了以下错误:
错误 2 error C2664: 'cli::array ^System::Text::Encoding::GetBytes(cli::array ^)' : 无法将参数 1 从 'std::string' 转换为 'cli::array
为什么会出现这种情况,明明和文档一模一样呢?(除了我使用的是普通字符串,但是使用顶级字符串^又会出错。)
我不确定这是否有关,但我的代码是托管的。
注意:在我解决这个问题之前,我尝试不考虑返回任何数据。

也许它需要使用unicodeString.c_str()函数? - Zan Lynx
你的输入肯定是 C++ 字符串而不是托管字符串吗?如果是 C++ 字符串,那么我不确定将其转换为托管字符串以进行 UTF-8 编码是否有意义 - 你可以使用 Windows API。 - Rup
1个回答

5

string 在 C++ 中和在 C# 中是不同的数据类型。建议使用 System::String^ 代替。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接