|
|
Программирование >> Операторы преобразования типа
| Глава 11. Строки | Таблица 11.1 (продолжение) | Операция | Описание | SizeO, iengthO | Получение количества символов | max size() | Получение максимально возможного количества символов | emptyO | Проверка пустой строки | capacityO | Получение количества символов, которые могут храниться | | в памяти без перераспределения | reserveO | Резервирование памяти для заданного количества символов | [LatO | Обращение к символу | >>, getlineO | Чтение строковых данных из потока данных | << | Запись строковых данных в поток данных | copvO | Копирование или запись содержимого строки в С-строку | c str() | Получение содержимого строки в виде С-строки | dataO | Получение содержимого строки в виде символьного массива | substrO | Получение подстроки | Поисковые функции | Поиск заданных подстрок и символов | beginO, end() | Поддержка нормальных итераторов | rbeginO, rend() | Поддержка обратных итераторов | get aiiocatorO | Получение распределителя памяти | Аргументы операций со строками | Стандартная библиотека поддерживает множество операций, предназначенных | для работы со строками. В частности, операции, изменяющие содержимое стро- | ки, обычно существуют в | нескольких перегруженных версиях, в которых но- | вое значение задается одним, двумя или тремя аргументами. Во всех опера- | циях такого рода используется схема передачи аргументов, представленная | в табл. 11.2. | | Таблица 11.2. Схема передачи аргументов строковых операций | Операция | Описаиие | const 5tring& str | Вся строка str | const sLring& str, size type idx, | Не более первых num символов str, начиная | size type num | с индекса idx | const char* str | Вся С-сгрока | const char* chars, size type ien | Первые ien символов символьного массива chars | char с | Символ с | size type num, char с | Num экземпляров символа с | iterator beg, iterator end | Все символы в интервале [beg,end) |
Обратите внимание; только в одноаргументной версии с передачей char* символ \0 интерпретируется как специальный символ, завершающий строку. В остальных случаях \0 пе считается специальным символом. std std std string slCnico ); string s2( nico .5): string s3(5.\0): sl.lengthO s2.1engthO s3.1engthO si инициализируется символами п.i.e.о s2 инициализируется символами n,i,c.o.\0 s3 инициализируется символами \0.\0.\0.\0,\0 Результат равен 4 Результат равен 5 Результат равен 5 Таким образом, в общем случае строка состоит из произвольных символов. Например, в нее можно загрузрггь содержимое двоичного файла. В табл. 11.3 приведена краткая сводка аргументов, используемых различными операциями. Таблица 11.3. Операции со строковыми параметрами | Полная строка | Часть строки | С-строка (char*) | Массив char | Отдельный симаол | символов | Интервал итераторов | Конструкюры | | | | | | | | | | | | | | | | assignO | | | | | | | | | | | | | | | | appendO | | | | | | | | push back() | | | | | | | | insertO, индексная версия | | | | | | | | insertO, итераторная версия | | | | | | | | replace (), индексная версия | | | | | | | | replace (), итераторная версия | | | | | | | | Поисковые функции | | | | | | | | | | | | | | | | <=. >. >= | | | | | | | | compareO | | | | | | | |
Выражение | Описание | string S | Создает пустую строку s | string s(str} | Создает новую строку как копию существующей строки str | string s(str, stridx) | Создает строку s, инициализированную символами строки str, | | начиная с индекса stridx | string s(str, stridx, strien) | Создает строку s, инициализированную не более чем strlen | | символами строки str, начиная с индекса stridx | string s(cstr) | Создает строку s, инициализированную С-строкой cstr | string s(chars, charsjen) | Создает строку s, инициализированную charsjen символами | | символьного массива chars | string s(num, c) | Создает строку, состоящую из num экземпляров символа с | siring s(beg, end) | Сажает строку, инициализированную всеми символами | | интервала [beg,end) | s.stringO | Уничтожает все символы и освобождает память |
Строка не может инициализироваться одним символом. Вместо этого необходимо использовать адрес или явно задать количество вхождений*. Std::str1ng sCx): ОШБКА std::str1ng s(l.x): ОК. создает строку из одного символа х Следовательно, автоматическое преобразование к типу string может производиться от типа const char*, но не от типа char. Строки и с-строки в стандарте С++ тип строковых литералов char* был заменен типом const char*. Впрочем, для сохранения совместимости поддерживается неявное, хотя и неже- Отсутствующие операции Строковые классы стандартной библиотеки С++ не предназначены для решения некоторых задач, возникающих при работе со строками. В частности, в них не предусмотрены следующие возможности: О поддержка регулярных вьфажений; О обработка текста (изменение регистра символов, сравнения без учета регистра символов). Впрочем, основные функции обработки текста легко реализовать самостоятельно. Примеры приведены на с. 480. Конструкторы и деструкторы В табл. 11.4 перечислены конструкторы и деструктор строк. Инициализация по интервалу, заданному при помощи итераторов, описана на с. 480. Таблица 11.4. Конструкторы и деструктор строк
|