Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

2.8. Функция copy копирует в массив s п элементов вызывающей строки, начиная с позиции pos. Нуль-символ в результирующий массив не заносится. Функция возвращает количество скопированных элементов:

size__type сору (char* s, size__type п, size__type pos = 0) const;

Пример 8.2. использования функций изменения содержимого строк:

#include <string>

#include <1ostreani>

using namespace std;

int main (){

string sl("прекрасная королева"), s2("лe"). s3("KopoBa");

cout « "sl= " « si « endl;

cout « "s2= " « s2 « endl;

cout « "s3= " « s3 « endl;

// Применение функции insert:

cout « "после insert:" « endl:

cout « "s3= " « s3.insert(4. s2) « endl:

cout « "s3= " « s3.insert(7. "к") « endl:

// Применение функции erase:

sl. erase(0.3):

cout « "после erase:" « endl:

cout « "sl= " « sl. erase(12.2) « endl:

// Применение функции replace:

cout « "после replace:" « endl:

cout « "sl= " « sl. replace(0.3. s3. 4.2) « endl:

}

Результат работы программы:

sl= прекрасная королева

s2= ле

s3- корова

после insert:

s3= королева

s3= королевка

после erase:

sl= красная корова

после replace:

sl= лесная корова

3) Поиск подстрок. Основные функции:

size__type find(const string& str, size_type pos = 0) const;

Ищет самое левое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию строки или npos, если строка не найдена.

НЕ нашли? Не то? Что вы ищете?

size_type find(char с, size_type pos = 0) const:

Ищет самое левое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию символа или npos, если символ не найден.

size_type rfind(const string& str, size_type pos = npos) const:

Ищет самое правое вхождение строки str в вызывающую строку, до позиции pos, и возвращает позицию строки или npos, если строка не найдена.

size_type rfind(char с, size_type pos = npos) const:

size_type find_first_of(const string& str, size_type pos = 0) const:

Ищет самое правое (левое) вхождение символа с в вызывающую строку, до позиции pos, и возвращает позицию символа или npos, если символ не найден.

size_type find_first_of(char с, size_type pos = 0) const:

size_type findJast_of(const string& str, size_type pos = npos) const:

Ищет самое левое (правое)вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию символа или npos, если вхождение не найдено.

size_type f1nd_last__of(char с. s1ze_type pos = npos) const:

Ищет самое правое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию символа или npos, если вхождение не найдено.

size_type find_first_not_of(const string& str, size_type pos = 0) const:

Ищет самую левую позицию, начиная с позиции pos, для которой ни один символ строки str не совпадает с символом вызывающей строки.

size_type find_first_not_of(char с, size_type pos = 0) const:

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

size_type find_last_not_of(const string& str, size_type pos = npos) const:

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

size_type find_last_not_of(char с, size_type pos = npos) const:

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

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

Пример 8.3. применения функций поиска:

#1ncTucle <str1ng>

#inclucle <iostrea(n>

using namespace std;

1nt main (){

string sl("лecнaя королева"), s2("лe");

cout « "sl= " « si « encll;

cout « "s2= " « s2 « endl;

int i = sl. find(s2);

int j = sl. rfind(s2):

cout « "первое s2 в si " « i « end1:

cout « "последнее s2 в si " « j « endl:

cout « "первое 'о' в si " « s l. f i n d ( ' o ' ) « endl:

cout « "последнее 'о' в si " « s l. r f i n d ( ' о ' ) « endl:

cout « "первое в si " « sl. find_first_of("aбвгдe") « endl:

cout « "последнее в si " « sl. findJast_of("a6вгдe") « endl:

}

Результат работы программы:

sl= лесная королева

s2= ле

первое s2 в si О

последнее. s2 в si И

первое 'о' в si 8

последнее 'о' в si 10

первое в si 1

последнее в si 14

4) Сравнение частей строк

Для сравнения строк целиком применяются перегруженные операции отношения, а если требуется сравнивать части строк, используется функция compare:

int compare(const string& str) const:

int compare(size__type posl, size_type nl, const string& str) const:

int compare(size_type posl, size_type nl,

const string& str, size_type pos2, size__type n2) const:

Первая форма функции сравнивает две строки целиком и возвращает значение, меньшее 0, если вызывающая строка лексикографически меньше str, равное нулю, если строки одинаковы, и большее нуля — если вызывающая строка больше. Эта форма - аналог функции сравнения строк strstr библиотеки С. Вторая форма выполняет аналогичные действия, но сравнивает со строкой str nl символов вызывающей строки, начиная с posl. Третья форма функции сравнивает nl символов вызывающей строки, начиная с posl, с подстрокой строки str длиной п2 символов, начиная с pos2.

Аналогичные формы функций существуют и для сравнения строк типа string со строками старого стиля.

Пример 8.4. использования функции сравнения строк:

#inclucle <string>

#inclucle <iostream>

using namespace std:

int main (){

string sl("лесная королева"), s2("лe"). s3("корова"):

cout « "sl= " « si « endl;

cout « "s2= " « s2 « endl;

cout « "s3= " « s3 « endl;

i f (s2.compare(s3) > 0) cout « "s2 > s3 " « endl:

i f (pare(7. 4. s3) < 0)

cout « "sl[7-10] < s3 " « endl:

i f (pare(7. 4. s3. 0.4 ) == 0)

cout « "sl[7-10] == s3[0-3] " « endl:

}

Результат работы программы:

sl= лесная королева

s2= ле

s3= корова

s2 > s3

sl[7-10] < s3

sl[7-10] == s3[0-3]

5) Получение характеристик строк

в классе string определено несколько функций-членов, позволяющих получить длину строки и объем памяти, занимаемый объектом:

size_type sizeO const: // Количество элементов строки

size_type lengthO const: // Количество элементов строки

size_type max_size() const: // Максимальная длина строки

size_type capacityO const: // Объем памяти, занимаемый строкой

bool emptyO const: // Истина, если строка пустая

9 . Пооковые классы

9.1. Основные понятия

Поток — это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. Потоки C++, в отличие от функций ввода/вывода в стиле С, обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис.

Чтение данных из потока называется извлечением, вывод в поток — помещением, или включением. Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен (оперативная память, файл на диске, клавиатура или принтер). Обмен с потоком для увеличения скорости передачи данных производится, как правило, через специальную область оперативной памяти — буфер. Фактическая передача данных выполняется при выводе после заполнения буфера, а при вводе — если буфер исчерпан.

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

По виду устройств, с которыми работает поток: стандартные, файловые и строковые.

Стандартные потоки предназначены для передачи данных от клавиатуры и на экран дисплея, файловые потоки — для обмена информацией с файлами на внешних носителях данных (например, на магнитном диске), а строковые потоки - для работы с массивами символов в оперативной памяти.

Для поддержки потоков библиотека C++ содержит иерархию классов, построенную на основе двух базовых классов — ios и streambuf. Класс ios содержит общие для ввода и вывода поля и методы, класс streambuf обеспечивает буферизацию потоков и их взаимодействие с физическими устройствами. От этих классов наследуется класс istream для входных потоков и ostream — для выходных. Два последних класса являются базовыми для класса iostream, реализующего двунаправленные потоки.

Ниже в иерархии классов располагаются файловые и строковые потоки. Часто используемые классы потоков:

ios — базовый класс потоков;

istream — класс входных потоков;

ostream — класс выходных потоков;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18