我应该用什么功能在mac OS X中打开文件?

时间:2017-03-17 08:31:55

标签: c++ macos c++builder firemonkey

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

1 个答案:

答案 0 :(得分:0)

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

否则,请勿直接使用fopen()。请改用RTL自己的函数,例如FileCreate()单位中的FileOpen() / System.SysUtils.hppTFileStream单位中的System.Classes.hpp类。让RTL在内部决定如何与平台API进行交互。