Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Глава 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; Просмотров: 228; Нарушение авторского права страницы