2012-01-05 41 views
7

我有一个C库,我从iOS Objective-C程序中使用。我的C库的一个功能是读入并处理文件中的数据。目前该功能看起来像这样我应该在C for iOS项目中使用哪种类型的文件名字符串?

internalType* parseFile(const char* filename); 

是一个char *传递的文件名类似这样的安全上的iOS还是我拍摄自己的脚使用Unicode?这里有一个首选的做法吗?

回答

3

很可能UTF-8。为了安全起见,您应该对URL使用CFURLGetFileSystemRepresentation,对路径使用-[NSString fileSystemRepresentation]

2

是的...... const char *应该适用于C语言,尤其是当它们匹配您可能调用的C函数时,例如fopen

如果您的文件很可能有古怪的非ASCII文件名,虽然,全盘皆输。 :-)在进行Objective C调用时,您会更安全,这些调用需要NSURLNSString对象。

+0

因此,我可以因此称之为:'parseFile([文件名cStringUsingEncoding:NSASCIIStringEncoding]));'? – wxs 2012-01-05 22:58:22

+0

是的,这应该工作。但是,如果文件名中有非古怪的非ASCII字符,则可能会出现意外(和不良)行为。 – 2012-01-05 22:59:37

+0

这就是我的恐惧。我希望的iOS不会让这种情况发生(这将是应用程序包中的文件) – wxs 2012-01-05 23:00:47

相关问题