-
UTF8String
const char *expr = [str UTF8String];
char *buf = new char[strlen(expr) + 1];// strlen得到的长度不包含\0, 所以需要加1
strcpy(buf, expr); // 拷贝一份包含\0的备份delete[] buf;// 删除buf数组
getCString
NSUInteger bufferSize = 500;
char buffer[bufferSize] = {0};
[str getCString:buffer maxLength:bufferSize encoding:NSUTF8StringEncoding];
char *buf = buffer; // 将这个字符数组的地址给buf关于 char *
char 是用于容纳单个字符的基本数据类型,char * 专用来指以 '\0' (杠零)结束的字符串。关于 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[] 内核