2011-07-14 11 views
35

Sé que esta pregunta es un posible duplicado, pero incluso después de ver algunos tutoriales y preguntas de Google, incluso en este foro, ninguno de ellos me da una respuesta decente sobre este tema.¿Cómo convertir NSString a C string?

que tengo:

NSString *str = @"text"; 

y me gustaría hacer algo como:

char cstring [512] = str; 

(esto sólo muestra lo que quiero hacer, después de mirar de Apple NSString Clase Ref Yo no incluso pensar en usarlo).

Hasta ahora tengo:

char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding]; 

Aún así, con que se producen errores.

¿Alguna solución?

Respuesta

117

tratar const char *command = [str UTF8String];

+2

Muchísimas gracias :)! – Matoe

26

Una secuencia de c es devuelto como un puntero, no como un conjunto de caracteres. Para usarlo, puede cambiar su variable a un puntero.

const char *command = [theString cStringUsingEncoding:NSUTF8StringEncoding]; 

Puesto que desea la codificación UTF-8, puede utilizar el método UTF8String conveniencia.

const char *command = [theString UTF8String]; 

Si necesita los datos a ser almacenados en una matriz de caracteres, puede utilizar el método getCString:maxLength:encoding:, pasando la matriz como la memoria intermedia. Esto le permitirá almacenar la cadena directamente en el búfer, y le dirá si el búfer es demasiado pequeño.

char command[512]; 
if(![theString getCString:command maxLength:sizeof(command)/sizeof(*command) encoding:NSUTF8StringEncoding]) { 
    NSLog(@"Command buffer too small"); 
}