В настоящее время я работаю над приложением iOS, в котором мне нужно преобразовать NSString
в char *
. Для этого я использовал следующий код:strlen() дает неправильный результат
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]
Я проверил его снова и снова. Но иногда я получаю правильный вывод. Но большую часть времени я получил неправильный результат.
В чем проблема? Есть ли ошибка в моем коде?
Пожалуйста, помогите мне, спасибо заранее
В дополнение к причине, указанной в ответе, обратите внимание, что две длины будут равны, если строка содержит символы ASCII в диапазоне 1-127. – rmaddy