Как использовать строковый класс C ++

How Use C String Class



Строковый литерал - это последовательность символов в указателе константного массива, оканчивающаяся нулевым символом 0. При идентификации переменной строковый литерал не может действительно уменьшаться или увеличиваться в длине. Многие операции нельзя выполнить со строковым литералом. Итак, нужен строковый класс. Строковый класс C ++ предназначен для структуры данных, набора символов в последовательности, что позволяет функциям-членам и операторам воздействовать на символы. Строковый класс позволяет больше манипуляций с соответствующим строковым литералом, чем просто строковый литерал. Чтобы понять эту статью, вам необходимо хорошо знать строковый литерал.

Класс и объекты

Класс - это набор переменных и функций, которые работают вместе; где переменным не присвоены значения. Когда переменным присваиваются значения, класс становится объектом. Различные значения, присвоенные одному и тому же классу, приводят к разным объектам; то есть разные объекты относятся к одному классу с разными значениями. Считается, что создание объекта из класса создает экземпляр объекта.







Имя, строка, - это класс. Объект, созданный из строкового класса, имеет имя, выбранное программистом.



Функция, принадлежащая классу, необходима для создания экземпляра объекта из класса. В C ++ эта функция имеет то же имя, что и имя класса. Объекты, созданные (экземпляры) из класса, имеют разные имена, данные им программистом.



Создание объекта из класса означает создание объекта; это также означает создание экземпляра.





Программа на C ++, использующая строковый класс, начинается со следующих строк вверху файла:

#включают
#включают
используя пространство имен std;

Первая строка предназначена для ввода / вывода. Вторая строка позволяет программе использовать все возможности строкового класса. Третья строка позволяет программе использовать имена в стандартном пространстве имен.



Перегрузка функции

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

Строительство

нить()
Следующий оператор создает строку нулевой длины без символа.

строка strColзнак равнонить();

Он начинается с названия класса (типа объекта), строки. За ним следует имя строки объекта, данное программистом. Оператор присваивания следует; затем имя конструктора с пустыми скобками. Здесь strCol - это созданный объект со всеми элементами данных (свойствами) и функциями-членами (методами).
строка (str)
Это похоже на предыдущее, но в конструкторе в качестве аргумента используется строковый литерал или идентификатор. Следующее утверждение иллюстрирует это:

строка strColзнак равнонить('Я люблю вас');

Конструкция со списком инициализаторов

Следующий код иллюстрирует это:

строка strColзнак равнонить({'Я','','the','или','v','А также','','а также','или','ты',' 0'});

Строковый литерал - я люблю тебя. Обратите внимание на символ нуля в конце списка инициализаторов.

строка (str, n)

Это формирует набор строк из первых n символов другой строки. Следующий код иллюстрирует это:

charп[] знак равно 'Я люблю вас';
строка strColзнак равнонить(п, 6);
Стоимость<<strCol<< ' п';

Результат: 'Мне нравятся первые 6 символов' из 'Я люблю тебя'. Помните: одиночный пробел - это символ.

строка (str, pos, n)

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

charп[] знак равно 'Я люблю вас';
строка strColзнак равнонить(п, 2, 4);
Стоимость<<strCol<< ' п';

Результат - любовь.

Для двух вышеупомянутых случаев, если n больше, чем размер строки, генерируется исключение out_of_range - см. Ниже.

строка (n, ‘c’)

Образует набор из n символов, где все символы одинаковы. Рассмотреть возможность,

строка strColзнак равнонить(5,'А также');
Стоимость<<strCol<< ' п';

Результат: eeeee, 5 e’s.

Назначение строки

После объявления обеих строк строка может быть назначена следующим образом:

строка strCol1знак равнонить('Я люблю вас');
строка strCol2;
strCol2знак равноstrCol1;
Стоимость<<strCol2<< ' п';

Выход такой: я люблю тебя.

Конструирование с помощью Iterator

Итератор обеспечивает общее представление сканирования через значения коллекции. Синтаксис для создания строки с итератором:

шаблон<класс InputIterator>
basic_string(InputIterator начало,Конец InputIterator, constРаспределитель&
кзнак равноРаспределитель());

Это создает строку для диапазона [начало, конец) - подробности см. Позже.

Уничтожение строки

Чтобы уничтожить строку, просто отпустите ее за пределы области видимости.

Доступ к элементу класса String

Созданный экземпляр строкового объекта может быть индексирован (индексирован) как массив. Подсчет индекса начинается с нуля.

stringName [i]

Операция stringName [i] возвращает ссылку на символ (элемент) в ithиндекс коллекции персонажей. Следующий код выводит v:

строка strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol[4];
Стоимость<<ch<< ' п';

stringName [i] const

Операция stringName [i] const выполняется вместо stringName [i], когда строковый объект является константным объектом. Например, он используется в следующем коде:

constстрока strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol[4];
Стоимость<<ch<< ' п';

Выражение возвращает постоянную ссылку на ithэлемент строкового объекта. Ни один из элементов строки не может быть изменен.

Назначение символа с нижним индексом

Непостоянному строковому объекту может быть присвоен символ следующим образом:

строка strColзнак равнонить('Я звоню');
strCol[2] знак равно 'f';
Стоимость<<strCol<< ' п';

На выходе я падаю. «C» было заменено на «f».

stringName.at (i)

stringName.at (i) похож на stringName [i], но stringName.at (i) более надежен. Следующий код показывает, как его следует использовать:

строка strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.в(4);
Стоимость<<ch<< ' п';

at () на самом деле является функцией-членом строкового класса.

stringName.at (i) const

stringName.at (i) const похожа на stringName [i] const, но stringName.at (i) const более надежна. stringName.at (i) const выполняется вместо stringName.at (i), когда строковый объект является константным строковым объектом. Например, он используется в следующем коде:

constстрока strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.в(4);
Стоимость<<ch<< ' п';

at () const на самом деле является функцией-членом строкового класса.

Присвоение значения с помощью функции at ()

Значение может быть присвоено непостоянному строковому объекту с помощью функции at () следующим образом:

строка strColзнак равнонить('Я звоню');
strCol.в(2) знак равно 'f';
Стоимость<<strCol<< ' п';

На выходе я падаю.

Проблема с дополнительными сценариями

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

передний()

Это возвращает ссылку на первый элемент строкового объекта без удаления элемента. Результатом следующего кода будет «I».

строка strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.передний();
Стоимость<<ch<< ' п';

Символ не удаляется из строкового объекта.

фронт () const

Когда конструкции строкового объекта предшествует const, выражение front () const выполняется вместо front (). Например, он используется в следующем коде.

constстрока strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.передний();
Стоимость<<ch<< ' п';

Возвращается постоянная ссылка. Элемент не удаляется из строкового объекта. Никакой символ не может быть изменен для постоянного строкового объекта.

назад()

Это возвращает ссылку на последний элемент строкового объекта без удаления элемента. Результатом следующего кода будет «u».

строка strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.назад();
Стоимость<<ch<< ' п';

назад () const

Когда конструкции строкового объекта предшествует const, выражение back () const выполняется вместо back (). Например, он используется в следующем коде.

constстрока strColзнак равнонить('Я люблю вас');
charchзнак равноstrCol.назад();
Стоимость<<ch<< ' п';

Возвращается постоянная ссылка. Элемент не удаляется из строкового объекта.

Емкость строки

size_type capacity () const noexcept

Эта функция-член емкости возвращает общее количество символов, которое строка может содержать без необходимости перераспределения. Сегмент кода для этого:

строка strColзнак равнонить();
intна однойзнак равноstrCol.емкость();
Стоимость<<на одной<< ' п';

На моем компьютере выводится 15.

резерв (n)

Объем памяти не всегда доступен в бесплатном магазине. Дополнительное место можно зарезервировать заранее. Рассмотрим следующий фрагмент кода:

строка strColзнак равнонить('любовь');
strCol.бронировать(6);
Стоимость<<strCol.емкость() << ' п';

На моем компьютере выводится 15.

size () const noexcept

Это возвращает количество символов в строке. Следующий код иллюстрирует:

строка strColзнак равнонить('Я люблю вас');
intна однойзнак равноstrCol.размер();
Стоимость<<на одной<< ' п';

Результатом будет 10, что не включает символы nul, 0.

длина () const noexcept

-такой же, как размер().
Примечание:размер() <=емкость().

Уменьшать до размеров()

Может уменьшить capacity () до size (), вызвав перераспределение; это не обязательно. Следующий код демонстрирует это:

строка strColзнак равнонить('Я люблю вас');
strCol.бронировать(12);
strCol.Уменьшать до размеров();
intsзнак равноstrCol.размер();
Стоимость<<s<< ' п';

На выходе будет 10, а не 12 или 16. Функция возвращает void.

изменить размер (sz), изменить размер (sz, ’c’)

Это изменяет размер строки. Если новый размер меньше старого, то элементы ближе к концу стираются. Если новый размер больше, то ближе к концу добавляется какой-нибудь символ по умолчанию. Чтобы добавить определенный символ, используйте функцию resize () с двумя аргументами. Следующий фрагмент кода иллюстрирует использование двух функций:

строка strColзнак равнонить('Я люблю вас');
strCol.изменить размер(6);
Стоимость<< 'Новый размер strCol:' <<strCol.размер() << ' п';
строка strCol1знак равнонить('Я люблю', 'А также');
strCol1.изменить размер(12);
Стоимость<< 'Новый размер strCol1:' <<strCol1.размер() << ' п';

Результат:

Новый размер strCol: 6
Новый размер strCol1: 12
Функция возвращает void.

clear () noexcept

Удаляет все элементы из строки, как показано в следующем сегменте кода:

строка strColзнак равнонить('Я люблю вас');
strCol.Чисто();
Стоимость<<strCol.размер() << ' п';

Результатом будет 0. Функция возвращает void.

пустой () const noexcept

Это возвращает 1 для истины, если в строковом объекте нет символа, или 0 для ложного, если строковый объект не пуст. Следующий код иллюстрирует это:

строка strCol1знак равнонить('Я люблю вас');
Стоимость<<strCol1.пустой() << ' п';
строка strCol2знак равнонить();
Стоимость<<strCol2.пустой() << ' п';

Результат:

0
1

Возвращение итераторов и класса String

Итератор похож на указатель, но имеет больше функций, чем указатель.

begin () noexcept

Возвращает итератор, который указывает на первый символ (элемент) строкового объекта, как в следующем сегменте кода:

строка strColзнак равнонить('Я люблю вас');
basic_string<char> ::итераторiterзнак равноstrCol.начинать();
Стоимость<< *iter<< ' п';

Результатом будет «I». Обратите внимание на способ объявления объявления, получающего итератор. Итератор разыменовывается в возвращаемом выражении для получения значения точно так же, как разыменование указателя.

begin () const noexcept;

Возвращает итератор, указывающий на первый элемент коллекции строковых объектов. Когда конструкции объекта предшествует const, выражение begin () const выполняется вместо begin (). При этом условии соответствующий элемент в объекте не может быть изменен. Например, он используется в следующем коде.

constстрока strColзнак равнонить('Я люблю вас');
basic_string<char> ::const_iteratoriterзнак равноstrCol.начинать();
Стоимость<< *iter<< ' п';

Результатом будет «I». Обратите внимание, что на этот раз был использован const_iterator вместо простого итератора для получения возвращенного итератора.

конец () noexcept

Возвращает итератор, который указывает сразу за последним элементом строкового объекта. Рассмотрим следующий фрагмент кода:

строка strColзнак равнонить('Я люблю вас');
basic_string<char> ::итераторiterзнак равноstrCol.конец();
Стоимость<< *iter<< ' п';

Результатом является null, что является ничем, поскольку за последним элементом нет конкретного элемента.

конец () const noexcept

Возвращает итератор, который указывает сразу за последним элементом строкового объекта. Когда конструкции строкового объекта предшествует const, выражение end () const выполняется вместо end (). Рассмотрим следующий фрагмент кода:

constстрока strColзнак равнонить('Я люблю вас');
basic_string<char> ::const_iteratoriterзнак равноstrCol.конец();
Стоимость<< *iter<< ' п';

Результат равен нулю. Обратите внимание, что на этот раз был использован const_iterator вместо простого итератора для получения возвращенного итератора.

Обратная итерация

Возможно иметь итератор, который выполняет итерацию от фактического конца до непосредственно перед первым элементом:

rbegin () noexcept

Возвращает итератор, который указывает на последний элемент строкового экземпляра объекта, как в следующем сегменте кода:

строка strColзнак равнонить('Я люблю вас');
basic_string<char> ::reverse_iteratoriterзнак равноstrCol.rbegin();
Стоимость<< *iter<< ' п';

Результатом будет «u». Обратите внимание на способ объявления объявления, получающего обратный итератор. Итератор разыменовывается в возвращаемом выражении для получения значения точно так же, как разыменование указателя.

rbegin () const noexcept;

Возвращает итератор, указывающий на последний элемент строкового объекта. Когда конструкции объекта предшествует const, выражение rbegin () const выполняется вместо rbegin (). При этом условии соответствующий элемент в объекте не может быть изменен. Эта функция используется, например, в следующем коде.

constстрока strColзнак равнонить('Я люблю вас');
basic_string<char> ::const_reverse_iteratoriterзнак равноstrCol.rbegin();
Стоимость<< *iter<< ' п';

Результатом будет «u». Обратите внимание, что на этот раз был использован const_reverse_iterator вместо просто reverse_iterator для получения возвращенного итератора.

render () noexcept

Возвращает итератор, который указывает непосредственно перед первым элементом строкового объекта. Рассмотрим следующий фрагмент кода:

строка strColзнак равнонить('Я люблю вас');
basic_string<char> ::reverse_iteratoriterзнак равноstrCol.делает();
Стоимость<< *iter<< ' п';

Результатом является null, что является ничем, поскольку непосредственно перед первым элементом нет конкретного элемента.

render () const noexcept

Возвращает итератор, который указывает непосредственно перед первым элементом строкового объекта. Когда конструкции объекта предшествует const, выражение rend () const выполняется вместо rend (). Рассмотрим следующий фрагмент кода:

constстрока strColзнак равнонить('Я люблю вас');
basic_string<char> ::const_reverse_iteratoriterзнак равноstrCol.делает();
Стоимость<< *iter<< ' п';

Результат равен нулю. Обратите внимание, что на этот раз был использован const_reverse_iterator вместо просто reverse_iterator для получения возвращенного итератора.

Модификаторы строки

Модификатор, изменяющий строковый объект, также может принимать или возвращать итератор.

Добавление

basic_string&оператор+ =(constbasic_string&п)

Добавляет правый строковый объект к левому строковому объекту. Пример:

строка strCol1знак равнонить('Я люблю');
строка strCol2знак равнонить(' ты');
strCol1+ =strCol2;
Стоимость<<strCol1<< ' п';

Результат - я люблю тебя. Не забывайте, что strCol1 + = strCol2 совпадает с strCol1 = strCol1 + strCol2.

основная_строка & оператор + = (константная диаграмма * s)

Добавляет строковый литерал к коллекции строковых объектов. Пример:

строка strColзнак равнонить('Я люблю');
strCol+ = ' ты';
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя.

основная_строка & оператор + = (диаграмма c)

Добавляет один символ в строку объекта. Пример:

строка strColзнак равнонить('Я тебя люблю');
strCol+ = 'ты';
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя.

основная_строка и оператор + = (список_инициализаторов)

Добавляет список инициализаторов. Пример:

строка strColзнак равнонить('Я люблю');
strCol+ = {'','а также','или','ты',' 0'};
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя. Всегда полезно добавлять nul, 0 в конец списка инициализаторов символов.

основная_строка и добавить (константа базовая_строка и строка)

Добавляет объект строки аргумента к основному объекту строки. Пример:

строка strCol1знак равнонить('Я люблю');
строка strCol2знак равнонить(' ты');
strCol1.добавить(strCol2);
Стоимость<<strCol1<< ' п';

Выход: Я люблю тебя.

основная_строка и добавить (константная диаграмма * с)

Добавляет аргумент строкового литерала к основной строке. Пример

строка strColзнак равнонить('Я люблю');
strColзнак равноstrCol.добавить(' ты');
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя.

основная_строка и добавление (список_инициализаторов)

Добавляет список инициализаторов, который является аргументом, к основной строке. Пример:

строка strColзнак равнонить('Я люблю');
strColзнак равноstrCol.добавить({'','а также','или','ты',' 0'});
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя. Всегда полезно добавлять символы nul, 0 в конец списка инициализаторов.

основная_строка и добавить (размер_типа n, диаграмма c)

Добавляет n одинаковых символов. Пример:

строка strColзнак равнонить(вкладка);
strColзнак равноstrCol.добавить(2, 'или');
Стоимость<<strCol<< ' п';

Вывод: табу.

основная_строка и добавить (const charT * s, size_type n)

Добавляет первые n элементов строкового литерала к основному строковому объекту. Пример:

строка strColзнак равнонить('Я люблю');
strColзнак равноstrCol.добавить(' ты так', 4);
Стоимость<<strCol<< ' п';

Результат: я люблю тебя. Если n больше длины литерала, генерируется исключение length_error.

основная_строка и добавить (константа базовая_строка и строка, размер_типа pos, размер_типа n = npos)

Добавляет n символов из индекса pos в основную строку. Пример:

строка strColзнак равнонить('Я люблю');
strColзнак равноstrCol.добавить(ты такой?, 2, 4);
Стоимость<<strCol<< ' п';

Выход: Я люблю тебя. Здесь также будет сгенерировано исключение, см. Позже.

Назначение

basic_string&назначать(constbasic_string&п)

Назначает объект строки аргумента основной строке, заменяя любое содержимое, которое там было.

строка strCol1знак равнонить('Я люблю вас');
строка strCol2знак равнонить('Я ей нужен');
strCol1знак равноstrCol1.назначать(strCol2);
Стоимость<<strCol1<< ' п';

Выход: Я ей нужен.

basic_string&назначать(constДиаграмма*s)

Присваивает аргумент строкового литерала основной строке, заменяя любое содержимое, которое там было.

строка strColзнак равнонить('Я люблю вас');
strColзнак равноstrCol.назначать('Я ей нужен');
Стоимость<<strCol<< ' п';

Выход: Я ей нужен.

basic_string&назначать(initializer_list<Диаграмма>)

Назначает аргумент списка инициализаторов основной строке,заменяя любой контент, который был там.
[cc langзнак равно'c'сбежалзнак равно'правда'шириназнак равно«780»]
строка strColзнак равнонить('Я люблю вас');
strColзнак равноstrCol.назначать({'S','час','А также','','п','А также','А также','d','s','','м','А также',' 0'});
Стоимость<<strCol<< ' п';

Выход: Я ей нужен. Хорошо всегда добавлять nul, 0 в конец списка символов, чтобы сформировать строковый литерал.

basic_string&назначать(constДиаграмма*s,size_type n)

Назначает первые n символов аргумента строкового литерала основной строке, заменяя любое содержимое, которое там было.

строка strColзнак равнонить('Я люблю вас');
strColзнак равноstrCol.назначать('Я ей нужен', 9);
Стоимость<<strCol<< ' п';

Выход: Ей нужно.

basic_string&назначать(size_type n,диаграмма c)

Назначает аргумент из n одинаковых символов основной строке, заменяя любое содержимое, которое там было.

строка strColзнак равнонить('Я люблю вас');
strColзнак равноstrCol.назначать(4, 'А также');
Стоимость<<strCol<< ' п';

Выход: eeee

basic_string&назначать(constbasic_string&п,size_type pos,
size_type nзнак равнонпо)

Назначает n символов аргумента строкового объекта, начиная с pos, основной строке, заменяя любое содержимое, которое там было.

строка strColзнак равнонить('Я люблю вас');
strColзнак равноstrCol.назначать('Я ей нужен', 4, 5);
Стоимость<<strCol<< ' п';

Выход: потребности. Выдает исключение - см. Позже.

Вставка

basic_string&вставлять(size_type pos, constbasic_string&п)

Вставляет аргумент строкового объекта в основную строку по индексу pos.

строка strCol1знак равнонить('Я люблю вас');
строка strCol2знак равнонить('ненавижу и');
strCol1знак равноstrCol1.вставлять(2,strCol2);
Стоимость<<strCol1<< ' п';

Вывод: Я тебя ненавижу и люблю. Выдает исключение - см. Позже.

basic_string&вставлять(size_type pos1, constbasic_string&
п,size_type pos2,size_type nзнак равнонпо)

Вставляет длину n символов из pos2 аргумента строкового объекта в основную строку с индексом pos1.

строка strCol1знак равнонить('Я люблю вас');
строка strCol2знак равнонить('ненавижу, хочу и нуждаюсь');
strCol1знак равноstrCol1.вставлять(2,strCol2, 6, 9);
Стоимость<<strCol1<< ' п';

Вывод: Я хочу и люблю тебя.

вставка итератора (const_iterator p, charT c)

Вставляет определенный символ, который является аргументом, в позицию, на которую указывает итератор. Возвращает итератор для позиции вновь вставленного символа.

строка strColзнак равнонить('Я люблю вас');
basic_string<char> ::итераторiterзнак равноstrCol.начинать();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basic_string<char> ::итераторсетьзнак равноstrCol.вставлять(iter, 'd');
Стоимость<< *сеть<< ' п';
Стоимость<<strCol<< ' п';

Результат:

‘D’

я любил тебя

вставка итератора (const_iterator p, size_type n, charT c)

Вставляет n того же символа аргумента в позицию, на которую указывает итератор. Возвращает итератор для позиции начала вновь вставленных одинаковых символов.

строка strColзнак равнонить(«Вкладка в землю».);
basic_string<char> ::итераторiterзнак равноstrCol.начинать();
++iter; ++iter; ++iter;
basic_string<char> ::итераторсетьзнак равноstrCol.вставлять(iter, 2, 'или');
Стоимость<< *сеть<< ' п';
Стоимость<<strCol<< ' п';

Результат:

'или'

Табу на земле.

basic_string&вставлять(size_type pos, constДиаграмма*s)

Вставляет строковый литерал аргумента в индекс, pos в основную строку.

строка strColзнак равнонить(«Вкладка в землю».);
strColзнак равноstrCol.вставлять(3, 'оо');
Стоимость<<strCol<< ' п';

Продукт: Табу на земле.

basic_string&вставлять(size_type pos, constДиаграмма*s,size_type n)

Вставляет первые n символов строкового литерала аргумента в индекс pos основной строки.

строка strColзнак равнонить(«Вкладка в землю».);
strColзнак равноstrCol.вставлять(3, 'оооо', 2);
Стоимость<<strCol<< ' п';

Продукт: Табу на земле.

Замена

basic_string&заменять(size_type pos1,size_type n1, constbasic_string&п))

Заменяет n1 символов в основном строковом объекте из индекса pos1 на строковый объект аргумента.

строка strCol1знак равнонить('Я люблю вас');
строка strCol2знак равнонить('ненавижу тебя и');
strCol1знак равноstrCol1.заменять(2, 4,strCol2);
Стоимость<<strCol1<< ' п';

Вывод: Я ненавижу тебя и тебя. Выдает исключение - см. Позже.

basic_string&заменять(size_type pos1,size_type n1, constbasic_string&
п,size_type pos2,size_type n2знак равнонпо)

Заменяет n1 символов в основном строковом объекте из индекса pos1 на n2 символа строкового объекта аргумента из индекса pos2.

строка strCol1знак равнонить('Я люблю вас');
строка strCol2знак равнонить('мы ненавидим его и ее');
strCol1знак равноstrCol1.заменять(2, 4,strCol2, 3, 12);
Стоимость<<strCol1<< ' п';

Вывод: Я ненавижу его и вас.

basic_string&заменять(size_type pos1,size_type n1, constДиаграмма*s,
size_type n2)

Заменяет n1 символов в главном строковом объекте из индекса pos1 первыми n2 символами литерального строкового аргумента.

строка strCol1знак равнонить('Я люблю вас');
strCol1знак равноstrCol1.заменять(2, 4, 'ненавижу его и ее', 12);
Стоимость<<strCol1<< ' п';

Вывод: Я ненавижу его и вас.

basic_string & replace (size_type pos, size_type n, const charT * s)

Заменяет n символов в основном строковом объекте из индекса pos на буквальный строковый аргумент.

строка strCol1знак равнонить('Я люблю вас');
strCol1знак равноstrCol1.заменять(2, 4, 'ненавижу его и');
Стоимость<<strCol1<< ' п';

Вывод: Я ненавижу его и вас.

basic_string&заменять(size_type pos1,size_type n1,size_type n2,диаграмма c)

Заменяет n1 символов в главном строковом объекте из индекса pos1 на n2 того же символа аргумента.

строка strCol1знак равнонить(«Плохой там планшет».);
strCol1знак равноstrCol1.заменять(9, 3, 2, 'или');
Стоимость<<strCol1<< ' п';

Вывод: Там плохое табу ..

стирание итератора (const_iterator p)

Удаляет символ в позиции, на которую указывает итератор; затем возвращает позицию итератора, которая теперь занята символом, который был рядом с этим символом (или end ()). Следующий код иллюстрирует это:

строка strColзнак равнонить('abcd');
basic_string<char> ::итераторiterзнак равноstrCol.начинать();
++iter; ++iter;
strCol.стереть(iter);
Стоимость<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' п';

Выход: a b d

basic_string&стереть(size_type posзнак равно 0,size_type nзнак равнонпо)

Удаляет n символов из индекса поз.

строка strColзнак равнонить('abcd');
strCol.стереть(1, 2);
Стоимость<<strCol[0] << '' <<strCol[1] << ' п';

Выход: a d

недействительный push_back (диаграмма c)

Чтобы добавить один символ в конец строки:

строка strColзнак равнонить('abcd');
strCol.отталкивать('5');
Стоимость<<strCol<< ' п';

Выход: abcd5

void pop_back ()

Удаляет последний символ, не возвращая его. Размер строки уменьшается на 1.

строка strColзнак равнонить('abcde');
strCol.pop_back();
Стоимость<<strCol<< ' п';

Выход: abcd

недействительный своп (основная_строка & s)

Литералы двух строковых объектов можно поменять местами.

строка strCol1знак равнонить(<помогатьзнак равно'post-69618 -__ DdeLink__781_3724385525'>к>'abcde');
строка strCol2знак равнонить('1234567');
strCol1.поменять местами(strCol2);
Стоимость<<strCol1<< ' п';
Стоимость<<strCol2<< ' п';

Результат:

'1234567'
'abcde'

Строковые операции

const charT * c_str () const noexcept

Возвращает указатель на первый элемент строки. Указатель можно увеличивать.

constстрока strColзнак равнонить('abcde');
const char*пзнак равноstrCol.c_str();
Стоимость<< *п<< ' п';
++п;
Стоимость<< *п<< ' п';

Выход:

к
б

Из-за второй константы в заголовке программа не может изменить какой-либо символ в строке. Строению предшествует const.

const charT * data () const noexcept

Возвращает указатель на первый элемент строки. Указатель можно увеличивать.

constстрока strColзнак равнонить('abcde');
const char*пзнак равноstrCol.данные();
Стоимость<< *п<< ' п';
++п;
Стоимость<< *п<< ' п';

Выход:

к
б

Из-за второй константы в заголовке программа не может изменить какой-либо символ в строке. Строению предшествует const.

основная_строка substr (тип_размера pos = 0, тип_размера n = npos) const

Возвращает строковый объект из n символов для подстроки, начинающейся с индекса pos.

constстрока strColзнак равнонить('abcdefghij');
constстрока retStrзнак равноstrCol.substr(2, 4);
Стоимость<<retStr<< ' п';

Выход: cdef

find () Функции-члены

size_type find (const basic_string & str, size_type pos = 0) const noexcept

Ищет объект подстроки, начиная с индекса поз. Если найдено, возвращает начало подстроки в основной строке.

строка strColзнак равнонить('Мы - это мир!');
строка strCol1знак равнонить('the');
intна однойзнак равноstrCol.найти(strCol1, 2);
Стоимость<<на одной<< ' п';

Выход:

индекс: 7
Если не найдено, возвращает -1.

size_type find (const charT * s, size_type pos = 0) const

Ищет литерал подстроки, начинающийся с индекса поз. Если найдено, возвращает начало подстроки в основной строке.

строка strColзнак равнонить('Мы - это мир!');
intна однойзнак равноstrCol.найти('находятся', 0);
Стоимость<<на одной<< ' п';

Поскольку pos = 0 является значением по умолчанию, 0 в аргументе можно было опустить.

Выход: 3

Если не найдено, возвращает -1.

size_type find (const charT * s, size_type pos, size_type n) const

Ищет первые n символов литерала подстроки, начиная с индекса поз. Если найдено, возвращает начало подстроки в основной строке.

строка strColзнак равнонить('Самый большой мальчик');
intна однойзнак равноstrCol.найти('больше', 1, 3);
Стоимость<<на одной<< ' п';

Выход: 4

Если не найдено, возвращает -1.

size_type find (диаграмма c, size_type pos = 0) const

Ищет символ c, начиная с индекса поз. Если найдено, возвращает начало подстроки в основной строке. Если не найден, возвращает -1.

строка strColзнак равнонить('Мы - это мир!');
intна однойзнак равноstrCol.найти('С участием');
Стоимость<<на одной<< ' п';

Выход: -1

Существуют следующие обратные функции-члены find ():

size_type rfind(constbasic_string&п,size_type posзнак равнонпо) constнет кроме;
size_type rfind(constДиаграмма*s,size_type posзнак равнонпо) const;
size_type rfind(constДиаграмма*s,size_type pos,size_type n) const;
size_type rfind(диаграмма c,size_type posзнак равнонпо) const;

Функции-члены сравнения

int сравнить (const basic_string & str) const noexcept

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

строка strCol1знак равнонить('толпа людей');
строка strCol2знак равнонить('люди');
intна однойзнак равноstrCol1.сравнивать(strCol2);
Стоимость<<на одной<< ' п';

Выход: -13

int сравнить (const charT * s) const

То же, что и выше, но аргумент является строковым литералом.

строка strCol1знак равнонить('люди');
intна однойзнак равноstrCol1.сравнивать('люди');
Стоимость<<на одной<< ' п';

Выход: 0

Строковые операторы

Эти операторы применимы к строковым объектам и не обязательно к строковым литералам.

+

Объединяет два строковых объекта и возвращает объединение.

строка strCol1знак равнонить('танцы дальше');
строка strCol2знак равнонить(' Луна');
строка strColзнак равноstrCol1+strCol2;
Стоимость<<strCol<< ' п';

Выход: танцы на луне.

==

Возвращает 1 для истины, если строковые объекты совпадают; и ноль для false, если это не так.

строка strCol1знак равнонить('танцы дальше');
строка strCol2знак равнонить(' на Луне');
bool blзнак равноstrCol1==strCol2;
Стоимость<<бл<< ' п';

Выход: 0

знак равно

Возвращает 1, если строковые объекты не совпадают, и ноль, если они совпадают.

строка strCol1знак равнонить('танцы дальше');
строка strCol2знак равнонить(' на Луне');
bool blзнак равноstrCol1знак равноstrCol2;
Стоимость<<бл<< ' п';

Выход: 1

<

Возвращает 1, если левый операнд меньше правого операнда согласно словарю, или ноль, если это не так.

строка strCol1знак равнонить('танцы дальше');
строка strCol2знак равнонить(' на Луне');
bool blзнак равноstrCol1<strCol2;
Стоимость<<бл<< ' п';

Выход: 0

Для обычных символов в C ++ в возрастающем порядке числа идут перед прописными буквами, а перед строчными. Пробел стоит перед нулем и всеми ними.

Типы символов основной строки C ++

char

Тип char является исходным типом C ++ и обычно хранит символ в 8 битах.

char16_t

Это сохраняет символ в 16 битах.

char32_t

Это хранит символ в 32 бита.

wchar_t

char16_t и char32_t - широкие символы. wchar_t - это расширенный символ, который является проприетарным и определяется реализацией.

Эти типы называются чертами характера. Однако C ++ технически относится к ним как к специализации черт. В этой статье основное внимание уделяется типу char. Подход к другим типам немного другой - см. Позже.

Другие функции-члены строковых операций

Сигнатуры других функций строковых операций:

size_type find_first_of(constbasic_string&п,size_type posзнак равно 0) constнет кроме;
size_type find_first_of(constДиаграмма*s,size_type pos,size_type n) const;
size_type find_first_of(constДиаграмма*s,size_type posзнак равно 0) const;
size_type find_first_of(диаграмма c,size_type posзнак равно 0) const;
size_type find_last_of(constbasic_string&п,size_type posзнак равнонпо) constнет кроме;
size_type find_last_of(constДиаграмма*s,size_type pos,size_type n) const;
size_type find_last_of(constДиаграмма*s,size_type posзнак равнонпо) const;
size_type find_last_of(диаграмма c,size_type posзнак равнонпо) const;
size_type find_first_not_of(constbasic_string&п,size_type posзнак равно 0) constнет кроме;
size_type find_first_not_of(constДиаграмма*s,size_type pos,size_type n) const;
size_type find_first_not_of(constДиаграмма*s,size_type posзнак равно 0) const;
size_type find_first_not_of(диаграмма c,size_type posзнак равно 0) const;
size_type find_last_not_of(constbasic_string&п,size_type posзнак равнонпо) constнет кроме;
size_type find_last_not_of(constДиаграмма*s,size_type pos,size_type n) const;
size_type find_last_not_of(constДиаграмма*s,size_type posзнак равнонпо) const;
size_type find_last_not_of(диаграмма c,size_type posзнак равнонпо) const;

Заключение

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