nsstring和const char *转换

时间:2010-12-06 13:23:37

标签: iphone

我尝试将nsstring转换为const char *。

1-我在一起添加一个nsstring和一个整数 2-然后我将这个新的nsstring转换为const char *
3-我有一个对象,我将这个新的nsstring归为我的对象的名字 4-我在另一个函数中使用此对象

  

NSString * firstName = [NSString stringWithFormat:@“Name%d”,1];
  const char * secondName = [firstName cString];
  myobject->的setName(secondName);

问题:A
当我在我的函数中使用我的对象时,1- secondName为null 2-但如果我将firstName替换为:firstName =“Name1”;
3-它的工作原理

问题B
1-如果我替换const char * secondName = [firstName cString];
by const char * secondName = [macString UTF8String];
2-即使我有firstName =“Name1”;
3-这不起作用!!

任何想法?

谢谢

:=)

4 个答案:

答案 0 :(得分:62)

使用NSString类中的cStringUsingEncoding:

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

答案 1 :(得分:15)

const char *是常量,无论如何都不能分配它们!

尝试将(const char*)[firstName UTF8String]传递给您的方法

答案 2 :(得分:6)

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

const char* secondName = [firstName UTF8String];

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

答案 3 :(得分:0)

使用此方法:

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