NSString 转 char *

  1. UTF8String
    const char *expr = [str UTF8String];
    char *buf = new char[strlen(expr) + 1];// strlen得到的长度不包含\0, 所以需要加1
    strcpy(buf, expr); // 拷贝一份包含\0的备份

    delete[] buf;// 删除buf数组
    
  2. getCString
    NSUInteger bufferSize = 500;
    char buffer[bufferSize] = {0};
    [str getCString:buffer maxLength:bufferSize encoding:NSUTF8StringEncoding];
    char *buf = buffer; // 将这个字符数组的地址给buf

  3. 关于 char *
    char 是用于容纳单个字符的基本数据类型,char * 专用来指以 '\0' (杠零)结束的字符串。

  4. 关于 char * 与 char a[];
    char *s;
    char a[];
    a 代表字符串的首地址,s 是个指针,保存这个字符串的地址(也就是首地址),也就是说,这俩指向一样,因此,可以 s = a; 但是不能 a = s;
    数组名可以复制给指针表示地址,但是指针无法付给数组名,数组名是个常量类型,是不能修改的。

参考:
1 Convert NSString into char array
2 深入 char * ,char ** ,char a[ ] ,char *a[] 内核

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容