目前我正在开发iOS应用程序,我需要将NSString
转换为char *
。为此,我使用了以下代码:
NSString *str = @"Hello ! How Are You ???";
char *as = (char *)[[str dataUsingEncoding:NSUTF8StringEncoding] bytes];
int a = strlen(as);
NSLog(@"Length using: -length : [%d]",[str length]);
NSLog(@"Length using: strlen() : [%d]",a);
但问题是我有不同的长度。
输出:
Length using: -length : [23]
Length using: strlen() : [33]
我一次又一次地检查了它。但有时我得到正确的输出。但大多数时候我得到了错误的结果。
问题是什么?我的代码中有错误吗?
请提前帮助我
答案 0 :(得分:2)
看起来像dataUsingEncoding:最后不包含'\ 0'而且strlen依赖它。请改用char *as = (char *)[str cStringUsingEncoding:NSUTF8StringEncoding];
。它给出了正确的结果。