Advertisement
RobertDeMilo

Строки

Sep 6th, 2023 (edited)
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.52 KB | None | 0 0
  1. Класс string имеет различные функции для изменения символьных последовательностей:
  2.  
  3. *********************************************************************************************************  
  4. 1. Функция clear() удаляет все символы в строке.
  5. void clear();
  6.  
  7. string str = "Встряхнуть, не перемешивать";
  8. str.clear();  Переменная str в итоге будет содержать пустую символьную последовательность.
  9.    
  10. *********************************************************************************************************    
  11. 2. Функция insert() вставляет строку S в позицию P.
  12. string& insert (size_type p, string& s);
  13.  
  14. string str = "Встряхнуть, не перемешивать";
  15. str.insert(11, "но ");  Переменная str будет хранить символьную строку "Встряхнуть, но не перемешивать".
  16.    
  17.      std::string s = "Some string functions";
  18.  
  19.     // вставка подстроки
  20.     s.insert(5, "std::");
  21.     std::cout << s << "\n";  // Some std::string functions
  22.    
  23. *********************************************************************************************************  
  24. 3. Функция erase() удаляет n символов с позиции p.
  25. string& erase (size_type p, size_type n);
  26.  
  27. string str = "Встряхнуть, не перемешивать";
  28. str.erase(11, 4);  Переменная str будет содержать строку "Встряхнуть, перемешивать".
  29.    
  30.     // удаление подстроки
  31.     s.erase(8, 5);  // Special string functions
  32.    
  33. *********************************************************************************************************  
  34. 4. Функция replace() заменяет, начиная с позиции p, кол-во символов n в строке s.
  35. Изменяемая строка доп-но возвращается в качестве ссылки.
  36. string& replace (size_type p, size_type n, string& s);
  37.  
  38. string str = "Встряхнуть, не перемешивать";
  39. string sub = str.replace(11, 2, "но");  
  40. После выполнения операции, переменные str и sub получают значение "Встряхнуть, но перемешивать";
  41.  
  42. // замена указанного диапазона на новую подстроку
  43.     s.replace(0, 4, "Special");
  44.     std::cout << s << "\n";  // Special std::string functions
  45.  
  46. *********************************************************************************************************
  47. 5. Функция substr() возвращает часть строки объекта string, которая начинается с позиции p и имеет длину из n знаков.
  48. string& substr (size_type p, size_type n=npos);
  49. !!!!!!!!!!!!!!!!Оригинал при этом не меняется!!!!!!!!!!!!!!!!
  50.    
  51. string str = "Встряхнуть, не перемешивать";
  52. string sub = str.substr(11, 2);  Переменная sub содержит слово "не".
  53. string rest = str.substr(11);  Переменная rest содержит слово "не перемешивать".
  54.     Если нет второго параметра, строка будет прочитана до конца.
  55. После этой команды переменная str все еще содержит оригинальную строку.
  56.      
  57.     выделение подстроки
  58.     // подстрока "string" из 6 символов начиная с 5-й позиции
  59.     std::string sub1 = s.substr(5, 6);
  60.     // подстрока "functions" с 12-й позиции и до конца
  61.     std::string sub2 = s.substr(12);    
  62.    
  63. *********************************************************************************************************
  64. 6. Функция compare() сравнивает объект типа string с другой строкой.
  65.    
  66.     Возвращаемое значение равно 0, когда обе строки одинаковы.
  67.     Если возвращаемое значение отрицательное, строка объекта меньше той, с которой он сравнивается.
  68.     Если число положительное, то строка объекта больше.
  69.    
  70.     Функция служит в качестве замены strcmp(), которая выполняет аналогичное сравнение для С - строк.
  71.    
  72. *********************************************************************************************************
  73. 7. Функция empty() сообщает, пуста ли строка объекта, возвращая в таком случае значение true.
  74.    
  75. *********************************************************************************************************
  76. 8. Функция resize() изменяет длину строки на то число, которое передается ей в качестве параметра.
  77.     Если значение меньше, чем первоначальная длина строки, она сократится.
  78.     В противном случае строка будет расширена и заполнена нулевыми байтами.
  79.    
  80. *********************************************************************************************************
  81. 9. Функция find() !!!возвращает позицию!!!, которую занимает передаваемая в качестве параметра искомая строка s.
  82.     Если дополнительно задается параметр p, поиск выполняется с позиции p.
  83. size_type find(const string& s, size_type p=0);
  84.     Если символьная последовательность s не найдена, функция возвращает значение !!!string::npos!!!
  85.        
  86.      // поиск символа или подстроки
  87.     size_t pos1 = s.find(' ');  // позиция первого пробела, в данном случае 4
  88.     size_t pos2 = s.find(' ', pos1 + 1);  // позиция следующего пробела (11)
  89.     size_t pos3 = s.find("str");  // вернётся 5
  90.     size_t pos4 = s.find("#");  // вернётся std::string::npos  
  91.        
  92. *********************************************************************************************************
  93. 10. Функция find_first_of() !!!возвращает первую позицию!!!, на которой располагается в объекте искомый символ или строка.
  94.        
  95. *********************************************************************************************************  
  96. С++20
  97. 11. Функции starts_with() и ends_with() для проверки префикса или суффикса строк:
  98.  
  99. #include <iostream>
  100. #include <string>
  101.  
  102. int main() {
  103.     std::string phrase;
  104.     std::getline(std::cin, phrase);
  105.  
  106.     if (phrase.starts_with("hello")) {
  107.         std::cout << "Greeting\n";
  108.     }
  109.  
  110.     if (phrase.ends_with("bye")) {
  111.         std::cout << "Farewell\n";
  112.     }
  113. }
  114.  
  115.  
  116. *********************************************************************************************************
  117. GPT
  118. Метод `find` и метод `find_first_of` для строки `string` в C++ используются для поиска подстроки или символа в строке.
  119.  
  120. Метод `find` ищет первое вхождение заданной подстроки в строку и возвращает позицию, с которой она начинается. Если подстрока не найдена, то возвращается значение `string::npos`. Например:
  121.  
  122. ```cpp
  123. std::string str = "Hello, world!";
  124. size_t found = str.find("world");
  125. if (found != std::string::npos) {
  126.     std::cout << "Substring found at position: " << found << std::endl;
  127. } else {
  128.     std::cout << "Substring not found" << std::endl;
  129. }
  130. ```
  131. Вывод: "Substring found at position: 7"
  132.  
  133. Метод `find_first_of` ищет первое вхождение любого символа из заданного набора символов в строку и возвращает позицию, с которой символ найден. Если ни один из символов не найден, то возвращается значение `string::npos`. Например:
  134.  
  135. ```cpp
  136. std::string str = "Hello, world!";
  137. size_t found = str.find_first_of("wxz");
  138. if (found != std::string::npos) {
  139.     std::cout << "Character found at position: " << found << std::endl;
  140. } else {
  141.     std::cout << "Character not found" << std::endl;
  142. }
  143. ```
  144. Вывод: "Character not found"
  145. ***********************************************************************************************************************
  146. Таким образом, основное отличие между методами `find` и `find_first_of` заключается в том, что первый ищет подстроку, а второй ищет символ из заданного набора символов.
  147. ***********************************************************************************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement