2010-12-06 7 views
14

J'essaie de convertir nsstring en const char *.nsstring et const char * conversion

1- i ajouter un NSString et un entier ensemble
2- puis-je convertir cette nouvelle NSString à const char *
3- j'ai un objet et j'attribue ce nouveau NSString comme le nom de mon objet.
4- i utiliser cet objet dans une autre fonction

NSString * prenom = [NSString stringWithFormat: @ "Nom% d", 1];
const char * secondName = [firstName cString];
myobject-> setName (secondName);

problème

: A
1- secondName est nul quand j'utiliser mon objet dans ma fonction.
2- mais si je remplace firstName par: firstName = "Name1";
3- cela fonctionne

problème B
1- si je remplace const char * secondName = [prenom CSTRING];
par const char * secondName = [macString UTF8String];
2- même si j'ai firstName = "Nom1";
3- ceci ne fonctionne pas !!

une idée?

merci

: =)

Répondre

15

const char * sont constants, vous ne pouvez pas les affecter en tout cas!

Essayez de passer (const char*)[firstName UTF8String] à votre méthode

58

Utilisation cStringUsingEncoding de la classe NSString:

NSString *myString = @"Hello"; 
const char *cString = [myString cStringUsingEncoding:NSASCIIStringEncoding]; 
+4

attention à la partie suivante dans la documentation si vous utilisez NSASCIIStringEncoding ou similaire: _Returns NULL si le destinataire ne peut pas b e sans perte, converti en encoding_ – V1ru8

+0

all (null) (nul) – Gank

3
NSString* firstName = [NSString stringWithFormat: @"Name%d", 1]; 

const char* secondName = [firstName UTF8String]; 

UTF8String returns a const char: - (const char *)UTF8String 
0

Utilisez cette méthode:

char* MakeStringCopy (const char* string) 
{ 
    if (string == NULL) 
     return NULL; 

    char* res = (char*)malloc(strlen(string) + 1); 
    strcpy(res, string); 
    return res; 
} 

NSString *filePath = @"~/Documents/Image.png"; 
MakeStringCopy([filePath UTF8String]); 
+3

... et présente une fuite de mémoire. – gwiazdorrr

Questions connexes