2017-07-19 64 views
0

我正在使用windows操作系統並試圖使用ACE_OS::write()將包含多種語言句子(通過Unicode)的ACE_Tstring寫入文件。如何在C++中編寫ACE_Tstring文件

但我在文件中得到的結果是不可預知的字符(亂碼文本)。

這是實現我的代碼:

ACE_Tstring *str = new ACE_Tstring(L"مرحبا привет świecie Hello") 
ACE_HANDL hFile = ACE_OS::open(L"myfile", _O_WRONLY); 

ACE_OS::write(hFile, str, 1048); 
wprintf(L"%ls",str->c_str()); 

正如你可以看到我還打印字符串到屏幕,並在屏幕上,我得到字符「????」出現任何接受英文字符的字符。

書面文本

مرحباприветŚwiecie的你好

結果在屏幕上顯示:

?????? ????? ???????你好

我錯過了什麼,我的代碼有什麼問題?

+0

看起來'c_str()'把你的字符串轉換成普通的ACSII'char's,所以你在垃圾處處得到垃圾,除了英語 –

回答

0

當ACE_USES_WCHAR未設置時,ACE_TString是ACE_CString的typedef。如果您需要強制使用寬字符,請嘗試使用ACE_WString。