将char *转换为NSString

问题描述 投票:26回答:3

我想在UITextField中显示char *

情况:

char *data;
char *name=data+6;
txtName.text=[[NSString alloc] initWithCString:name encoding:NSUTF8StringEncoding];

但我没有得到正确的价值。

iphone objective-c ios
3个回答
56
投票

要从NSString创建const char *,只需使用以下方法:

返回一个autoreleased对象:

[NSString stringWithUTF8String:name];

返回一个retaind对象:

[[NSString alloc] initWithUTF8String:name];

Reference

如果您没有得到正确的值,那么数据就会出错。添加几个NSLog调用以查看字符串包含的内容。


5
投票

你可以使用[NSString stringWithUTF8String: data]


4
投票

你能指望什么?你有一个未经注册的char *。然后你向指针添加6,这已经是未定义的行为。然后你尝试将指向任何旧垃圾的指针(并且你不知道它指向何处)转向NSString *。没有什么好处可以来自这个。

使用ASCII或UTF-8编码定义指向实际实际C字符串的char *。然后像这样创建一个NSString:

char* cstring = "Try harder";
NSString* objcstring = @(cstring);
© www.soinside.com 2019 - 2024. All rights reserved.