2011-05-09 133 views
3

我需要將以下c#代碼更改爲C++代碼。如何在Visual C++中使用UTF8Encoding

public static byte[] StrToByteArray(string str) 
    { 
     System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
     return encoding.GetBytes(str); 
    } 

this website我發現對於UTF8Encoding從中我建立這個代碼

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

C++代碼,但是這給了我以下錯誤

錯誤2錯誤C2664:「CLI: :array ^ System :: Text :: Encoding :: GetBytes(cli :: array ^)':無法將參數1從 'std :: string'轉換爲 'cli :: array

爲什麼它會這樣做,而它與文檔相同? (除了我使用正常的字符串,但使用頂級字符串^給我一個錯誤。)

我不確定它是否相關,但我的代碼管理。

注意:我還沒有擔心有關返回任何數據,直到我得到這個工作。

+0

也許它想要unicodeString.c_str()? – 2011-05-09 16:17:02

+0

你的輸入絕對是一個C++字符串而不是託管字符串嗎?如果它是一個C++字符串,那麼我不確定將它轉換爲託管字符串只是爲了執行UTF-8編碼是有意義的 - 您可以使用Windows API。 – Rup 2011-05-09 16:38:09

回答

5

string在C++中與C#中的數據類型不同。嘗試使用System::String^代替。

+0

@Joel:謝謝,修正。 – Philipp 2011-05-09 17:55:52

+0

謝謝。 C#和C++看起來如此相似,但卻非常不同。 – Andy 2011-05-10 07:40:27

相關問題