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

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

Доступ к символам в объектах класса string

Доступ к отдельным символам объектов класса string вы можете получить раз- ными способами. В нашем следующем примере мы покажем доступ с использо- ванием метода at(). Вы можете также использовать перегруженную операцию [ ], которая позволяет рассматривать объект класса string как массив. Однако опера- ция [ ] не предупредит вас, если вы попытаетесь получить доступ к символу, лежа- щему за пределами массива (например, после конца строки). Операция [ ] ведет себя здесь так, как обращается с настоящим массивом, и это более эффективно. Но это может привести к тяжелым для диагностики программным ошибкам. Безопасней использовать метод at(), который остановит программу, если вы ис- пользуете индекс, не входящий в допустимые границы. (Есть одно исключение, и мы обсудим его в главе 14 «Шаблоны и исключения».)

// sstrchar.cpp

// доступ к символам в строке

#include <iostream>

#include <string>

using namespace std;

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

int main ( )

{

  char charray [ 80 ];

  string word;

 

  cout << "Введите слово: ";

  cin >> word;

  int wlen = word.length ( );     // длина строки

  cout << "По одному символу: ";

  for ( int j = 0; j < wlen; j++ )

    cout << word.at ( j );        // тут будет проверка на выход за пределы строки

    // cout << word [ j ];        // а тут проверки не будет

 

  word.copy ( charray, wlen, 0 ); // копируем строку в массив

  charray [ wlen ] = 0;

  cout << "\nМассив содержит: " << charray << endl;

 

  return 0;

}

В этой программе мы использовали метод at() для вывода содержимого объ- екта класса string символ за символом. Аргумент метода at() — это местонахож- дение символа в строке.

Затем мы показали, как вы можете использовать метод copy() для копирова- ния объекта класса string в массив типа char, эффективно преобразовывая его в строковый тип. Вслед за копированием, после последнего символа строки дол- жен быть вставлен нулевой символ ('\0') для завершения преобразования к стро- ковому типу. Метод Length() класса string возвращает то же число, что и метод size(). Приведем вывод программы SSTRCHAR:

Введите слово: симбиоз По одному символу: симбиоз Массив содержит: симбиоз

(Вы можете также преобразовать объект класса string к строковому типу, исполь- зуя методы c_str() или data(). Однако для использования этих методов вам нуж- но изучить указатели, которые мы рассмотрим в главе 10.)

 

33