ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 7) онлайн

Копирование строк

Лучшим способом понять истинную природу строк является произведение дейст- вий с ними символ за символом. Наша следующая программа делает именно это.

// strcopy1.cpp

// копирование строки с использованием цикла #include  <iostream> #include  <cstring> using namespace std; /////////////////////////////////////////////////////////// int main ( ) {

// исходная строка

char str1 [ ] = "Маленькой елочке холодно зимой,";

const int MAX = 80; // максимальная длина строки char str2 [ MAX ]; // сама строка

for ( int j = 0; j < strlen ( str1 ); j++ ) // копируем strlen ( str1 ) str2 [ j ] = str1 [ j ];          // символов из str1 в str2

str2 [ j ] = '\0';    // завершаем строку нулем

cout << str2 << endl;     // и выводим на экран

return 0;

}

Эта программа создает строковую константу str1 и строковую переменную str2. Затем в цикле for происходит копирование строковой константы в строко- вую переменную. За каждую итерацию цикла копируется один символ в строке программы

str2 [ j ] = str1 [ j ];

Вспомним, что компилятор объединяет две смежные строковые константы в одну, что позволяет нам записать цитату в двух строках.

Эта программа также знакомит нас с библиотечными функциями для строк. Так как в C++ нет встроенных операторов для работы со строками, то обычно используют эти функции. К счастью, их много. Одну из них мы использовали в программе strlen(), она определяет длину строки (сколько символов строка содержит). Мы используем длину строки для ограничения цикла for, чтобы ско- пировать нужное нам количество символов. Для использования библиотечных функций для строк нужно подключить к программе заголовочный файл CSTRING (или STRING.H).

Скопированная версия строки должна заканчиваться нулевым символом. Однако длина строки, возвращаемая функцией strlen(), не включает в себя нуле- вой символ. Мы могли скопировать один добавочный символ, но проще вста- вить нулевой символ явно. Мы делаем это в строке

str2 [ j ] = '\0':

Если вы не вставите этот символ, то затем увидите, что в строку, напечатан- ную программой, будут включены символы, следующие за нужной вам строкой. Операция << просто печатает все символы до тех пор, пока не встретит '\0'.

 

22