Reputation: 191
i try to convert nsstring to const char*.
1- i add a nsstring and an integer together
2- then i convert this new nsstring to const char*
3- i have an object and i attribute this new nsstring as my object's name.
4- i use this object in another function
NSString* firstName = [NSString stringWithFormat: @"Name%d", 1];
const char* secondName = [firstName cString];
myobject->setName(secondName);
problem : A
1- secondName is null when i use my object in my function.
2- but if i replace firstName by : firstName = "Name1";
3- it works
problem B
1- if i replace const char* secondName = [firstName cString];
by const char* secondName = [macString UTF8String];
2- even if i have firstName = "Name1";
3- this is not working !!
any idea ??
thank you
:=)
Upvotes: 18
Views: 40162
Reputation: 348
NSString* firstName = [NSString stringWithFormat: @"Name%d", 1];
const char* secondName = [firstName UTF8String];
UTF8String returns a const char: - (const char *)UTF8String
Upvotes: 9
Reputation: 1025
Use cStringUsingEncoding from the NSString class:
NSString *myString = @"Hello";
const char *cString = [myString cStringUsingEncoding:NSASCIIStringEncoding];
Upvotes: 66
Reputation: 1897
Use this method:
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]);
Upvotes: 0
Reputation: 9113
const char* are constant, you can't assign them in anyway !
Try passing (const char*)[firstName UTF8String
] to your method
Upvotes: 17