2017-03-17 95 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。

相關問題