2011-02-10 23 views
5

Hello lovely computer people:¿Convierte un CFStringRef en una cadena C?

Me gustaría convertir el siguiente CFStringRef en un CString. Alguna idea de como?

recordFilePath = (CFStringRef)[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.wav"]; 

Gracias!


EDIT 1

DarkDust respuesta parece acercarse, pero todavía estoy recibiendo un error (ver comentario). ¿Alguna ayuda?

+0

Esto es objetivo-c, ¿verdad? La etiqueta debe ser arreglada. – AShelly

Respuesta

7

Desde un CFStringRef se puede lanzar a NSString de teléfono gratuito, sólo tiene que hacer:

myCString = [(NSString *)myCFStringRef UTF8String]; 

o en su caso:

myCString = [[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.wav"] UTF8String]; 
+0

hmmmmm ... No estoy seguro de si me falta algo aquí. ¿No es eso un NSString? Estoy buscando una cadena c. Como char newString [] =. –

+2

Eso es lo que le da el método 'UTF8String', una cadena c terminada en nulo. – kubi

+0

Obtengo 'myCString no está declarado en este ámbito' :( –

11

Una solución sencilla:

CFStringGetCString(myCFStringRef, myCStringPointer, mySize, myEncoding); 

Pagar esta función:

Boolean CFStringGetCString (
    CFStringRef theString, 
    char *buffer, 
    CFIndex bufferSize, 
    CFStringEncoding encoding 
); 
Cuestiones relacionadas