Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 |


