2013-08-06 42 views
0

我發現有一個叫做System.UnicodeString.BytesOf的API來獲取UnicodeString的字節數組。BytesOf()和wchar_t數組

但是,我不知道使用該函數的好處。

相反,我們可以使用wchar_t陣列,如:

wchar_t szBuf[100]; 
wcscpy(szBuf, str.c_str()); 

什麼是BytesOf功能比較使用wchar_t陣列那些用處?

+0

正確的名稱是'System.SysUtils.BytesOf()',它有一個重載版本,它接受一個'UnicodeString'作爲輸入。 –

回答

2

BytesOf()將字符串轉換爲字節數組。在重載版本以UnicodeString作爲輸入的情況下,它將UnicodeString數據轉換爲操作系統的默認Ansi字符集,然後將結果數據複製到陣列(IOW,BytesOf(UnicodeString)僅僅是TEncoding::Default->GetBytes(UnicodeString)的包裝)。

+0

謝謝你的回覆,Remy Lebeau。所以,UnicodeString被轉換爲默認的Ansi字符集,而不是廣泛的字符集? – sevenOfNine

+0

這是正確的。有單獨的'WideBytesOf()'和'PlatformBytesOf()'函數將'UnicodeString'轉換爲UTF-16編碼字節數組(它們都在內部使用'TEncoding :: Unicode-> GetBytes()')而不是Ansi 。 –

+0

感謝您的進一步信息。我很感激。 – sevenOfNine