ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 10) онлайн
Копирование строк с использованием указателей
В рассмотренных нами примерах указатели использовались для получения зна- чений элементов массива. Указатели можно также использовать для вставки значений в массив. В следующем примере COPYSTR мы рассмотрим функцию, которая копирует одну строку в другую:
// copystr.cpp
// копирует одну строку в другую
#include <iostream>
using namespace std;
int main ( )
{
void copystr ( char*, const char* ); // прототип функции
char* str1 = "Поспешишь – людей насмешишь!";
char str2 [ 80 ]; // пустая строка
copystr ( str2, str1 ); // копируем строку str1 в str2
cout << str2 << endl; // и показываем результат
return 0;
}
///////////////////////////////////////////////////////////
void copystr ( char* dest, const char* src )
{
while ( *src ) // пока не встретим конец строки
*dest++ = *src++; // копируем ее
*dest = '\0'; // заканчиваем строку
}
Здесь функция main() вызывает функцию copystr(), которая копирует str1 в str2.
*dest++ = *src++;
Значение src помещается по адресу, на который указывает dest. Затем оба ука- зателя увеличиваются и на следующей итерации передается следующий символ. Цикл прекращается, когда в src будет найден символ конца строки; в этой точке в dest присваивается значение null, работа функции завершена. На рис. 10.11 показано, как указатели движутся по строкам.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
