2017-07-19 58 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。