user472171
user472171

Reputation: 191

nsstring and const char* conversion

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

Answers (4)

ryatkins
ryatkins

Reputation: 348

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

const char* secondName = [firstName UTF8String];

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

Upvotes: 9

Mike Burba
Mike Burba

Reputation: 1025

Use cStringUsingEncoding from the NSString class:

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

Upvotes: 66

Dee
Dee

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

VdesmedT
VdesmedT

Reputation: 9113

const char* are constant, you can't assign them in anyway !

Try passing (const char*)[firstName UTF8String] to your method

Upvotes: 17

Related Questions