Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Глава 7. Хранение последовательностей в массивах 83




К тому же                              () работает даже тогда, когда размер строки символов во время компиляции неизвестен. А это случается  намного                       чем вы думаете (смотрите главу 6, "Создание функций").

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

Строка — это символьный массив с завершающим нулевым символом.

 

 

Инициализировать строку в C++ можно с использованием двойных кавычек. Этот способ более удобен, чем тот, в котором используются одинарные кавычки для каждого символа. Строки 8 и 9 из предыдущего примера можно записать более компактно:

char                         =

Соглашение об использовании имен для обозначения строк с завершающим нулем использует префикс sz. Такая запись является соглашением и не более.

Строка "Stephen" содержит восемь, а не семь символов — не забывайте о нулевом символе!

 

Программистам часто приходится работать со строками. В C++ для этого можно использовать стандартные библиотечные функции обработки строк, что

облегчает жизнь. Чтобы понять, как они работают, попытаемся самостоятельно напи- сать что-то подобное.

 

Написание функции, соединяющей две строки

Вы можете написать собственный вариант обрабатывающей строки функции. Для этого нужно использовать семантику массива и добавить проверку наличия в конце массива нулевого символа. Рассмотрим следующий пример:

// Concatenate — объединение двух строк, которые

// разделяются символом " — "

 

 

// Включаем файл, необходимый для

// функций работы со строками

 

//       прототипов

void              szTarget[], char

 

int rnain(int nArg, char* i

// считываем первую строку... char

cout << "Введите строку #1: ";

128) ;

//      вторую... char szString2[128];

 

84                                          Часть II. Становимся программистами


cout << "Введите строку "; cin.getline 128);

 

//            " — " к первой строке " —

//              " - ") ;

 

//       добавим вторую строку... szString2);

//              szString2);

 

// выведем результат на экран cout << "\n" << szStringl << "\n";

 

return 0;

 

//         ~ присоединяет строку

//           к концу строки szTarget

void                           char szSource

(

// находим конец первой строки int targetlndex = 0;

e                  )

(

 

 

// присоединяем вторую строку к концу первой int. = 0 ;

(szSource [sourcelndex] )

{

=

 

+

 

// вписываем в конец

 

}

считывает две строки, используя функцию getline{) . (При ис-

пользовании варианта                >>                   информация считывается до первого пробе- ла, в нашем же случае строка считывается до символа начала новой строки.)

Функция main () объединяет две строки, используя concatStrin g {) перед выво- дом результатов. Функция concatStrin g () присоединяет второй аргумент (szSource) к концу (szTarget). Эта задача решается в несколько этапов.

В первом цикле проводится поиск конца строки szTarget. Функция concat- String; итеративно проходит по строке szTarget, пока значение targetlnde x не станет равным индексу нулевого символа в конце строки. В этот момент переменная


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 208; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.013 с.)
Главная | Случайная страница | Обратная связь