русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Конкатенация строковых литералов.


Дата добавления: 2013-12-24; просмотров: 914; Нарушение авторских прав


Строки

Строка – это серия символов, сохраненная в расположенных последовательно байтах памяти. В С++ доступны два способа работы со строками.

1. Унаследован от С и часто называется строки в стиле С.

2. Основан на библиотечном классе string.

 

Идея серии символов, сохраняемых в последовательных байтах, предполагает хранение строки в массиве char, где каждый элемент содержится в отдельном элементе массива. Строки предоставляют удобный способ хранения текстовой информации, такой как сообщения для пользователя или его ответы.

Строке в стиле С обладают специальной характеристикой: последним в каждой такой строке является нулевой символ. Этот символ, записываемый как \0, предоставляет собой символ с ASCII-кодом 0, который служит меткой конца строки. Например:

 

char dog[8] = {‘b’, ‘r’, ‘e’, ‘u’, ‘x’, ‘ ’, ‘R’, ‘E’ }; // это не строка

char cat[8] = {‘d’, ‘f’, ‘a’, ‘s’, ‘d’, ‘t ’, ‘T’, ‘\0’ }; // это строка

Обе эти переменные представляют собой массивы char, но только вторая из них является строкой.

 

Нулевой символ играет фундаментальную роль в строках стиля С.

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

Если вы просите объект cout отобразить такую строку, как cat из примера, он выводит первых семь символов, обнаруживает нулевой символ и останавливается.

Однако если вывести с помощью cout массив dog, который не является строкой, то выведуется 8 символов, и будет продолжать двигаться по помяти байт за байтом, интерпретируя каждый их них, как символ, подлежащий выводу, пока не встретит нулевой символ.

Поскольку нулевые символы, которые по сути представляют собой байты, содержащие нули, встречаются в помяти довольно часто, ошибка быстро обнаружится. Но не стоит трактовать нестроковые символьные массивы как строки.



 

Пример инициализации массива выглядит громоздким и утомительным – множество одиночных кавычек плюс необходимость следить и помнить о нулевом символе. Существует более простой способ инициализации массива с помощью строки.

Для этого просто используйте строку в двойных кавычнах, которая называется строковой константой или строковым литералом, как показано ниже:

char bird[11] = “Mr. Cheeps”;

// наличие символа \0 подразумевается

char fish[] = “Bubbles”;

// компилятор сам подсчитывает количество элементов

Строки в двойных кавычках всегда неявно включают ограничивающий нулевой символ, поэтому указывать его явно не требуется.

Средства ввода С++ предназначенные для чтения строки с клавиатуры в массив char автоматически добавляют завершающий нулевой символ.

 

Инициализация массива строкой.

Иногда строки могут оказаться слишком большими, чтобы удобно разместиться в одной строке кода. С++ позволяет выполнить конкатенацию строковых литералов – т.е. комбинировать две строки с двойными кавычками в одну. В действительности любые две строковые константы, разделенные только пробельным символом (пробелами, символами табуляции, символами новой строки), автоматически объединяются в одну. Таким образом, следующие три оператора вывода эквивалентны:

 

 

Первый символ второй строки немедленно следует за последним символом первой, не считая \0 в первой строке. Символ \0 из первой строки заменяется первым символом второй строки.



<== предыдущая лекция | следующая лекция ==>
Инициализация массивов в С++11 | Построчное чтение ввода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.198 сек.