2017-03-17 90 views
1

我使用C++ Builder来创建我的跨平台应用程序。 在应用程序中,我将通过打开的文件对话框获取文件名/路径。 在Windows中,保持unicode字符串不成问题。 (例如“C:\测试”) 在mac OS X中,我可以从UnicodeString中获取正确的字符串。但我找不到一个好的方法将其转换为char数组,并使用“fopen”正确打开文件。 我试图直接将UnicodeString分配给AnsiString,但它变成了“C:\ ??”。 因为“fopen”只接受“char *”而UnicodeString只能导出“char16 *”,所以我需要将它转换为char“fopen”。 有什么想法?我应该使用什么函数在mac OS X中打开文件?

+0

在Mac OS X中可能出现[\ _wfopen等效项]的副本(http://stackoverflow.com/questions/12319/wfopen-equivalent-under-mac-os-x) –

回答

0

只因为fopen()需要一个char*并不意味着你应该给它一个ANSI字符串。 OSX上的POSIX API接受UTF-8编码的文件名,所以使用UTF8String而不是AnsiString。 A char*可以指向一个UTF-8字符串。

否则,请勿直接使用fopen()。改用RTL自带的功能,如FileCreate()/FileOpen()System.SysUtils.hpp单元,或类System.Classes.hpp单元。让RTL在内部决定如何与您交互平台API。

相关问题