2012-01-05 12 views
7

Tengo una biblioteca C que estoy usando desde un programa iOS Objective-C. Una de las funciones de mi biblioteca C lee y procesa los datos de un archivo. Actualmente esa función se ve algo como esto¿Qué tipo debo usar para las cadenas de nombre de archivo en C para el proyecto iOS?

internalType* parseFile(const char* filename); 

está pasando en un char * para el nombre de fichero como esta caja fuerte en IOS o estoy disparando a mí mismo en el pie con Unicode? ¿Hay una práctica preferida aquí?

Respuesta

3

Es probable que UTF-8. Para estar seguro, debe usar CFURLGetFileSystemRepresentation para las URL y -[NSString fileSystemRepresentation] para las rutas.

2

Sí ... const char * debería funcionar bien para C, especialmente porque coinciden con las funciones C a las que es probable que llame, como fopen.

Sin embargo, si sus archivos tienen nombres extravagantes que no son de Ascii, todas las apuestas están desactivadas. :-) Estarías más seguro haciendo las llamadas de Objective C que toman los objetos NSURL o NSString.

+0

Entonces puedo llamarlo así: 'parseFile ([filename cStringUsingEncoding: NSASCIIStringEncoding]))' '? – wxs

+0

Sí, eso debería funcionar. Pero, de nuevo, si tiene caracteres extraños no ASCII en el nombre del archivo, espere un comportamiento inesperado (y malo). –

+0

Ese es exactamente mi miedo. Espero que iOS no permita que eso suceda (este será un archivo dentro del paquete de la aplicación) – wxs

Cuestiones relacionadas