【问题标题】:how to convert the string to char in objective C如何在目标C中将字符串转换为char
【发布时间】:2011-11-21 11:46:32
【问题描述】:

如何在objective C中将字符串转换为char。以下是我正在使用的代码,

NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:param];
NSLog(@"%@", param);

在第 3 行,我收到以下警告,

不兼容的指针类型将“NSString*”发送到类型参数 'char*'。

那么如何克服上述警告。在此先感谢。

【问题讨论】:

标签: objective-c type-conversion


【解决方案1】:

您可能希望获得NSString 的UTF-8 表示:

NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:[param UTF8String]];
NSLog(@"%@", param);

但是,只有当gseCom:更新字符串(即参数是const char *)时,这才有效。真正了解这一点的唯一方法是阅读课程的文档(你没有提到课程是什么,所以我无法提供帮助)。

如果它没有更新参数,并且gseCom 被错误地定义为接受char *,而不是const char *,那么您可以简单地将其转换为正确的类型:

[class gseCom:(char *)[param UTF8String]];

但是,如果它正在更新 param,那么您需要给它一个缓冲区来使用:

[class gseInit:&getData];

NSString *param = [paramsToPass objectAtIndex:0]

// Create a buffer containing the c-string (in UTF-8)
#define BUFSIZ 256    // This size depends on what the string could hold
char cparam[BUFSIZ];
[param getCString:cparam maxLength:BUFSIZ encoding:NSUTF8Encoding];

// Let the method update the string
NSLog(@"before %s", cparam);
[class gseCom:cparam];
NSLog(@"after %s", cparam);

【讨论】:

  • hi trojanfoe,感谢您的帮助,在使用您的代码进行转换后,我收到以下警告,如何克服这个问题,我通过谷歌检查,我无法获得正确的解决方案,警告也就是说,将 'const char*' 发送到 'char*' 类型的参数会丢弃限定符。这个警告对你来说可能看起来很简单,但我是目标 C 的新手,在此先感谢。
  • @shasha 我已经用解决这个问题的方法更新了我的答案。
【解决方案2】:
NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:[param cStringUsingEncoding:NSUTF8Encoding]];
NSLog(@"%@", param);

method documentation

【讨论】:

  • 嗨 Regexident,感谢您的帮助,在使用您的代码进行转换后,我收到以下警告,如何克服这个问题,我通过谷歌检查,我无法获得正确的解决方案,警告也就是说,将 'const char*' 发送到 'char*' 类型的参数会丢弃限定符。这个警告对你来说可能看起来很简单,但我是目标 C 的新手,在此先感谢。
【解决方案3】:
NSString *str = @"Hello";
char h = [str characterAtIndex:0];
NSLog(@"%c", h);

【讨论】:

  • 他实际上想要char * 而不是char
【解决方案4】:

您可能对来自 Apple 开发者网站的 Creating and Converting String Objects 感兴趣。

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2013-05-13
    相关资源
    最近更新 更多