Нуль-терминированные строки – строки, в которых символ с кодом 0 является признаком конца строки и не входит в её состав.
Пространства имён. Работа с пространствами имён. Оператор using. Приоритеты и конфликты имён. Пространства имен C++ Объявление пространства имен namespace [ имя_пространства ] { объявления }; В операторе namespace могут присутствовать не только объявления, но и определения программных объектов (тела функций, инициализаторы переменных и т.д.). Поименованная область может объявляться неоднократно, причем последующие объявления рассматриваются как дополнения к предыдущим. Более того, пространство имен является понятием, уникальным для всего проекта, а не одного программного файла, так что дополнение пространства имен может выполняться и за рамками одного файла. namespace NS1 { int i=1; int k=0; void f1(int); void f2(double); } … namespace NS2 { int i, j, k; } … namespace NS1 { int i=2; // Ошибка – повторное определение int k; // Ошибка – повторное объявление void f1(void); // Перегрузка void f2(double); //А такое повторное объявление допустимо! } Анонимные пространства имен
Стандартное пространство имен К настоящему времени стандартным стал способ записи заголовочных файлов без ”.h” (и, соответственно, указание пространства имен std либо явно, либо с помощью оператора using). Более того, заголовочные файлы стандартной библиотеки с суффиксом ”.h”считаются устаревшими и существуют только для обратной совместимости. Разрешение области действия идентификатора Все программные объекты, описанные внутри некоторого пространства имен, становятся видимыми вне оператора namespace с помощью оператора::, трактуемого как оператор разрешения области действия. При этом можно использовать одноименные переменные из различных пространств и собственные переменные: Void main(void) { int i = 2 + NS1::i; } Объявление и директива using Если имя часто используется вне своего пространства, его можно объявить доступным с помощью оператора using имя_пространства:: имя_в_пространстве; После чего такое имя можно использовать без явного указания имени пространства, например Void main(void) { using NS2::k; int i = 2 + k; } Наконец, можно сделать доступными все имена из какого-либо пространства, записав оператор
using namespace имя_пространства; Имена, объявленные где-нибудь явно или с помощью оператора using, имеют приоритет перед именами, доступными по оператору using namespace. Псевдонимы пространства имен Можно задать псевдоним (синоним) пространства имен с помощью оператора using имя_синонима = имя_пространства;
Строки. Операции над строками. Строка – конечная последовательность символов. Количество символов в строке называется её длиной (текущей длиной). Допустимы строки нулевой длины. Основные операции над строками: · поиск символов в строке; · замена символов в строке; · поиск, замена, удаление подстрок; · вставка в строку новой подстроки; · сцепление (конкатенация) двух строк. В результате выполнения этих операций длина строки может измениться! Средства C++ для работы со строками Для работы со строками символов язык C++ предоставляет две возможности: · работу с массивами данных типа char (функции для работы с такими данными описаны в файлах <string.h> или <cstring> · класс string, описанный в файле <string> Работа со строками фиксированной длины Если длина строки известна, не равна нулю и не изменяется, для её хранения можно использовать массив соответствующего размера. Пример: номер зачётной книжки всегда состоит из 7 символов char nz[7]; nz[0] = '1'; nz[1] = '0'; nz[2] = '2'; nz[3] = '3'; nz[4] = '1'; nz[5] = '6'; nz[6] = '9'; … for (int i=0; i<7; i++) cout << nz[i]; Неудобства такого подхода – строку можно обрабатывать только посимвольно! Нуль-терминированные строки. Функции стандартной библиотеки для обработки нуль-терминированных строк. Нуль-терминированные строки Нуль-терминированные строки – строки, в которых символ с кодом 0 является признаком конца строки и не входит в её состав. Нуль-терминированные строки используются: · в строковых константах; · при вводе-выводе; · в стандартных функциях, описанных в файле <string.h> Примеры строковых констант:
Определение и инициализация строк Такой вид инициализации является краткой формой стандартной инициализации массива
Функции для работы со строками из заголовочного файла <string.h> char* strcat(char *sl, const char *s2) (сцепление строк).
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|