0

目前我正在开发一个 iOS 应用程序,我需要在其中将 a 转换NSStringchar *. 为此,我使用了以下代码:

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]

我一次又一次地检查它。但有时我会得到正确的输出。但大多数时候我得到了错误的结果。

问题是什么?我的代码有什么错误吗?

请帮助我,提前谢谢

4

1 回答 1

2

看起来 dataUsingEncoding: 末尾不包含 '\0' 并且 strlen 依赖它。改为使用char *as = (char *)[str cStringUsingEncoding:NSUTF8StringEncoding];。它给出了正确的结果。

于 2013-06-14T12:27:11.963 回答