Программирование >>  Операторы преобразования типа 

1 ... 146 147 148 [ 149 ] 150 151 152 ... 239


Глава 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. Конструкторы и деструктор строк



1 ... 146 147 148 [ 149 ] 150 151 152 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика