Хелпикс

Главная

Контакты

Случайная статья





Использование указателей при работе со строками



Использование указателей при работе со строками

Задача: скопировать строку src в строку dest.

Пример 13. Очевидный алгоритм решения задачи. charsrc[10], dest[10]; for(inti = 0; i<=strlen(src); i++) dest[i] = src[i];

Длина строки определяется с помощью функции strlen, которая вычисляет длину, выполняя поиск нуль-символа.

Таким образом, строка фактически просматривается дважды, что не очень хорошо, так как понижается производительность. Более эффективным будет использование проверки на нуль-символ непосредственно в программе.

char *src = new char[10]; char *dest = new char [10], *d = dest; <…> while( *src != 0) *d++ = *src++; *d = 0; // завершающий нуль

А можно сделать ещё проще:

char *src = new char [10]; char *dest = new char [10], *d = dest; <…> while (*d++ = *src++)

Распространённые ошибки при работе со строками:

    1. отсутствие нуль-символа в конце строки;
    2. выход указателя за пределы строки при её просмотре.

В общем случае лучше пользоваться функциями библиотеки или определенным в стандартной библиотеке C++ классом string, который обеспечивает индексацию, присваивание, сравнение, добавление, объединение строк и поиск подстрок, а также преобразование из С-строк, то есть массивов типа char, в string, и наоборот



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.