Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Класс string имеет различные функции для изменения символьных последовательностей:
- *********************************************************************************************************
- 1. Функция clear() удаляет все символы в строке.
- void clear();
- string str = "Встряхнуть, не перемешивать";
- str.clear(); Переменная str в итоге будет содержать пустую символьную последовательность.
- *********************************************************************************************************
- 2. Функция insert() вставляет строку S в позицию P.
- string& insert (size_type p, string& s);
- string str = "Встряхнуть, не перемешивать";
- str.insert(11, "но "); Переменная str будет хранить символьную строку "Встряхнуть, но не перемешивать".
- std::string s = "Some string functions";
- // вставка подстроки
- s.insert(5, "std::");
- std::cout << s << "\n"; // Some std::string functions
- *********************************************************************************************************
- 3. Функция erase() удаляет n символов с позиции p.
- string& erase (size_type p, size_type n);
- string str = "Встряхнуть, не перемешивать";
- str.erase(11, 4); Переменная str будет содержать строку "Встряхнуть, перемешивать".
- // удаление подстроки
- s.erase(8, 5); // Special string functions
- *********************************************************************************************************
- 4. Функция replace() заменяет, начиная с позиции p, кол-во символов n в строке s.
- Изменяемая строка доп-но возвращается в качестве ссылки.
- string& replace (size_type p, size_type n, string& s);
- string str = "Встряхнуть, не перемешивать";
- string sub = str.replace(11, 2, "но");
- После выполнения операции, переменные str и sub получают значение "Встряхнуть, но перемешивать";
- // замена указанного диапазона на новую подстроку
- s.replace(0, 4, "Special");
- std::cout << s << "\n"; // Special std::string functions
- *********************************************************************************************************
- 5. Функция substr() возвращает часть строки объекта string, которая начинается с позиции p и имеет длину из n знаков.
- string& substr (size_type p, size_type n=npos);
- !!!!!!!!!!!!!!!!Оригинал при этом не меняется!!!!!!!!!!!!!!!!
- string str = "Встряхнуть, не перемешивать";
- string sub = str.substr(11, 2); Переменная sub содержит слово "не".
- string rest = str.substr(11); Переменная rest содержит слово "не перемешивать".
- Если нет второго параметра, строка будет прочитана до конца.
- После этой команды переменная str все еще содержит оригинальную строку.
- выделение подстроки
- // подстрока "string" из 6 символов начиная с 5-й позиции
- std::string sub1 = s.substr(5, 6);
- // подстрока "functions" с 12-й позиции и до конца
- std::string sub2 = s.substr(12);
- *********************************************************************************************************
- 6. Функция compare() сравнивает объект типа string с другой строкой.
- Возвращаемое значение равно 0, когда обе строки одинаковы.
- Если возвращаемое значение отрицательное, строка объекта меньше той, с которой он сравнивается.
- Если число положительное, то строка объекта больше.
- Функция служит в качестве замены strcmp(), которая выполняет аналогичное сравнение для С - строк.
- *********************************************************************************************************
- 7. Функция empty() сообщает, пуста ли строка объекта, возвращая в таком случае значение true.
- *********************************************************************************************************
- 8. Функция resize() изменяет длину строки на то число, которое передается ей в качестве параметра.
- Если значение меньше, чем первоначальная длина строки, она сократится.
- В противном случае строка будет расширена и заполнена нулевыми байтами.
- *********************************************************************************************************
- 9. Функция find() !!!возвращает позицию!!!, которую занимает передаваемая в качестве параметра искомая строка s.
- Если дополнительно задается параметр p, поиск выполняется с позиции p.
- size_type find(const string& s, size_type p=0);
- Если символьная последовательность s не найдена, функция возвращает значение !!!string::npos!!!
- // поиск символа или подстроки
- size_t pos1 = s.find(' '); // позиция первого пробела, в данном случае 4
- size_t pos2 = s.find(' ', pos1 + 1); // позиция следующего пробела (11)
- size_t pos3 = s.find("str"); // вернётся 5
- size_t pos4 = s.find("#"); // вернётся std::string::npos
- *********************************************************************************************************
- 10. Функция find_first_of() !!!возвращает первую позицию!!!, на которой располагается в объекте искомый символ или строка.
- *********************************************************************************************************
- С++20
- 11. Функции starts_with() и ends_with() для проверки префикса или суффикса строк:
- #include <iostream>
- #include <string>
- int main() {
- std::string phrase;
- std::getline(std::cin, phrase);
- if (phrase.starts_with("hello")) {
- std::cout << "Greeting\n";
- }
- if (phrase.ends_with("bye")) {
- std::cout << "Farewell\n";
- }
- }
- *********************************************************************************************************
- GPT
- Метод `find` и метод `find_first_of` для строки `string` в C++ используются для поиска подстроки или символа в строке.
- Метод `find` ищет первое вхождение заданной подстроки в строку и возвращает позицию, с которой она начинается. Если подстрока не найдена, то возвращается значение `string::npos`. Например:
- ```cpp
- std::string str = "Hello, world!";
- size_t found = str.find("world");
- if (found != std::string::npos) {
- std::cout << "Substring found at position: " << found << std::endl;
- } else {
- std::cout << "Substring not found" << std::endl;
- }
- ```
- Вывод: "Substring found at position: 7"
- Метод `find_first_of` ищет первое вхождение любого символа из заданного набора символов в строку и возвращает позицию, с которой символ найден. Если ни один из символов не найден, то возвращается значение `string::npos`. Например:
- ```cpp
- std::string str = "Hello, world!";
- size_t found = str.find_first_of("wxz");
- if (found != std::string::npos) {
- std::cout << "Character found at position: " << found << std::endl;
- } else {
- std::cout << "Character not found" << std::endl;
- }
- ```
- Вывод: "Character not found"
- ***********************************************************************************************************************
- Таким образом, основное отличие между методами `find` и `find_first_of` заключается в том, что первый ищет подстроку, а второй ищет символ из заданного набора символов.
- ***********************************************************************************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement