我应该使用什么函数在 mac OS X 中打开文件?

What function should I use to open file in mac OS X?

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

仅仅因为 fopen() 采用 char* 并不意味着您应该给它一个 ANSI 字符串。 POSIX OSX 上的 API 接受 UTF-8 编码的文件名,因此请使用 UTF8String 而不是 AnsiStringchar* 可以指向 UTF-8 字符串。

否则不要直接使用fopen()。请改用 RTL 自己的函数,例如 System.SysUtils.hpp 单元中的 FileCreate()/FileOpen(),或 System.Classes.hpp 单元中的 TFileStream class。让 RTL 在内部决定如何为您与平台 API 交互。