2009-02-26 14 views
7

quiero fundición mi NSString a un char constante el código se muestra a continuación:echando una NSString a char problema

NSString *date = @"12/9/2009"; 
char datechar = [date UTF8String] 

NSLog(@"%@",datechar); 

sin embargo, devuelve la advertencia asignación crea un entero desde un puntero sin una conversión y no puedo imprimir el carbón adecuadamente, puede alguien decirme cuál es el problema

Respuesta

27

Intente algo más a esto:

NSString* date = @"12/9/2009"; 
char* datechar = [date UTF8String]; 
NSLog(@"%s", datechar); 

Es necesario utilizar char * en lugar de carbón, y hay que imprimir cadenas de C usando% NO% @ (% @ es solo para los tipos de identificación de Objective-C)

+5

UTF8String devuelve un const char * –

1

yo añadiría a * entre el carbón y datechar (y un% s en lugar de un @%):

NSString *[email protected]"12/9/2009"; char * datechar=[date UTF8String]; 
NSLog(@"%s",datechar); 
6

creo que desea utilizar:

const char *datechar = [date UTF8String]; 

(nota del * de allí)

+1

esto debería ser la respuesta – Adamski

2

su código tiene 2 problemas:

1) "char datechar ..." es una un solo carácter, que solo contendría un carácter/byte, y no contendría todo el conjunto que está produciendo desde su fecha/objeto de cadena. Por lo tanto, su línea debe tener un (*) al frente de la variable para almacenar varios caracteres en lugar de solo uno.

2) Después de la corrección anterior, aún recibirías una advertencia sobre (char *) vs (const char *), por lo tanto, necesitarías "lanzar" ya que son técnicamente los mismos resultados. Cambie la línea de:

char datechar = [date UTF8String];

en

char *datechar = (char *)[date UTF8String];

Aviso (char *) después del signo =, le dice al compilador que la expresión devolvería un (char *) en lugar de es predeterminado (const char *).

Sé que ya ha marcado la respuesta antes, sin embargo, pensé que podría contribuir a explicar los problemas y cómo solucionarlo con más detalle.

Espero que esto ayude.

Saludos cordiales Heider

0

estaba sufriendo durante mucho tiempo para convertir NSString a char a utilizar para esta función

-(void)gpSendDTMF:(char) digit callID: (int)cid; 

He intentado cada respuesta de esta pregunta/muchas cosas de la búsqueda de Google pero no funcionó para mí.

Finalmente, tengo la solución.


Solución:

NSString *digit = @"5"; 

char dtmf; 

char buf[2]; 

sprintf(buf, "%d", [digit integerValue]); 

dtmf = buf[0];