Главная->Інформатика та програмування->Содержание->Модификация объектов класса string

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 7) онлайн

Модификация объектов класса string

Существуют различные пути модификации объектов класса string. В нашем сле- дующем примере показаны методы erase(), replace() и insert() в работе.

// sstrchng.cpp

// изменение частей строки

#include <iostream>

#include <string>

using namespace std;

///////////////////////////////////////////////////////////

int main ( )

{

  string s1 ( "Все хорошо, прекрасная маркиза." );

  string s2 ( "принцесса" );

  string s3 ( "Приветствую " );

 

  s1.erase ( 0, 12 );              // убираем "Все хорошо, "

  s1.replace ( 11, 7, s2 );        // заменяем "маркиза" на "принцесса"

  s1.insert ( 0, s3 );             // вставляем "Приветствую, "

  s1.erase ( s1.size ( )-1, 1);    // убираем '.'

  s1.append ( 3, '!' );            // добавляем '!!!'

 

  int x = s1.find ( ' ' );         // ищем пробелы

  while ( x < s1.size ( ) )        // цикл по всем пробелам

  {

    s1.replace(x, 1, "/");         // заменяем пробел на '/'

    x = s1.find ( ' ' );           // ищем следующий пробел

  }

 

  cout << "s1: " << s1 << endl;

 

  return 0;

}

Метод erase() удаляет фрагмент из строки. Его первым аргументом является позиция первого символа фрагмента, а вторым — длина фрагмента. В нашем примере удалено "Все хорошо," из начала строки. Метод replace() заменяет часть строки на другую строку. Его первым аргументом является позиция начала за- мены, вторым — количество символов исходной строки, которое должно быть заменено, а третьим аргументом является строка для замены. Здесь маркиза за- меняется на принцесса.

Метод insert() вставляет строку, определенную во втором аргументе, на место, определенное в первом аргументе. В нашем примере "Приветствую" вставлено в начало строки s1. При втором использовании метода erase() применен метод size(), который возвращает количество символов в объекте класса string. Выра- жение size()-1 — это позиция последнего символа фрагмента, который будет удален. Метод append() ставит три восклицательных знака в конце предложения. В этой версии метода первый аргумент — это количество символов, которое бу- дет добавлено, а второй аргумент — это символы, которые будут добавлены.

В конце программы мы показали идиому, которую вы можете использовать для перезаписи нескольких фрагментов в другой строке. Здесь в цикле while мы ищем символ пробела, используя метод find(), и заменяем каждый из них на слэш, используя функцию replace().

Мы начали с объекта s1, содержащего в себе строку «Все хорошо, прекрасная маркиза». После замены вывод программы SSTRCHNG будет таким:

S1: Приветствую/прекрасная/принцесса!!!

 

31