开发者

nsstring and const char* conversion

开发者 https://www.devze.com 2023-01-29 06:01 出处:网络
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*

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 : f开发者_运维知识库irstName = "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

:=)


Use cStringUsingEncoding from the NSString class:

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


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

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


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

const char* secondName = [firstName UTF8String];

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


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]);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号