【问题标题】:NSString to char[] in Objective-cNSString 到 Objective-c 中的 char[]
【发布时间】:2011-09-28 08:59:58
【问题描述】:
我必须将 NSString 转换为以 null 结尾的 char[]。
我的做法是这样的:
NSString *regC = @"1234"
char REG[[regC length] +1];
BOOL result = [regC getCString:REG maxLength:32 encoding:NSUTF8StringEncoding];
我不知道这是否正确。
REG 必须是 5 个字符的数组,最后一个为 null/
谢谢。
【问题讨论】:
标签:
objective-c
nsstring
char
【解决方案1】:
char *REG = [@"test" UTF8String];
除非您使用 malloc/free,否则您无法在运行时分配 char[] 的长度。但是通过上述方式,您将不需要管理内存。
【解决方案2】:
只要在 NSString 中使用 ASCII 字符,这就是正确的转换方式。它们以 UTF-8 编码表示为单字节字符。
如果你使用一些非 ASCII 字符,你应该让你的 REG 更大。
更新:还有一个:您应该将实际缓冲区大小放入“maxLength:”参数中,以避免缓冲区溢出。不是 32,而是 [regC 长度] +1。