【问题标题】: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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 2023-03-11
        • 2011-03-12
        相关资源
        最近更新 更多