2013-06-25 6 views
0

Учитывая эту C строку:Заменить символы в C строки

unsigned char *temp = (unsigned char *)[@"Hey, I am some usual CString" UTF8String] 

Как я могу заменить «обычный» с «другой», чтобы получить: «Эй, я какой-то другой CString».

Невозможно использовать функции NSString (/replaceOccurencesOfString и т. Д.) По причинам производительности. Я должен держать все это на низком уровне, так как строки, с которыми я столкнусь, превысят 5 МБ, поэтому замена (будет много заметок) займет около 10 минут на устройстве iOS.

ответ

1

Objective-C - это просто тонкий слой над C. Если вам нужно работать с родными строками C, просто продолжайте и делайте это.

Это

What is the function to replace string in C?

кажется решить вашу проблему достаточно хорошо.

+0

К сожалению, функция, предоставленная в этом вопросе, кажется, ничего не заменяет. Сломанный? –

+1

Ничего, я нашел еще один ниже принятого ответа. Это хорошо работает. Спасибо. –

+0

Это должен быть комментарий. –

0

Строка C, возвращаемая UTF8String, является константой. Вы не можете безопасно изменить его, выставив его в неконстантную строку и мутируя байты. Таким образом, единственный способ сделать это - создать копию.

Если у вас действительно есть причина использовать NSString в качестве источника, возможно, гораздо быстрее выполнить преобразование исходной строки.

Если вы хотите получить лучший ответ, который поможет вам ускорить ваш частный случай, вы должны предоставить дополнительную информацию. Как вы создаете исходную строку, каковы количество и размер строк поиска/замены и т. Д.

Смежные вопросы