Читать «C++: базовый курс» онлайн - страница 322

Herbert Schildt

И хотя класс string традиционно не воспринимается как часть библиотеки STL, он, тем не менее, представляет собой еще один контейнерный класс, определенный в C++. Это означает, что он поддерживает алгоритмы, описанные в предыдущем разделе. При этом строки имеют дополнительные возможности. Для получения доступа к классу string необходимо включить в программу заголовок <string>.

Класс string очень большой, он содержит множество конструкторов и функций-членов. Кроме того, многие функции-члены имеют несколько перегруженных форм. Поскольку в одной главе невозможно рассмотреть все содержимое класса string, мы обратим ваше внимание только на самые популярные его средства. Получив общее представление о работе класса string, вы сможете легко разобраться в остальных его возможностях самостоятельно.

Прототипы трех самых распространенных конструкторов класса string имеют следующий вид.

string();

string(const char *str);

string (const string &str);

Первая форма конструктора создает пустой объект класса string. Вторая форма создает string-объект из строки с завершающим нулем, адресуемой параметром str. Эта форма конструктора обеспечивает преобразование из строки с завершающим нулем в объект типа string. Третья создает string-объект из другого string-объекта.

Для объектов класса string определены следующие операторы.

Эти операторы позволяют использовать объекты типа string в обычных выражениях и избавляют программиста от необходимости вызывать такие функции, как strcpy() или strcat(). В общем случае в выражениях можно смешивать string-объекты и строки с завершающим нулем. Например, string-объект можно присвоить строке с завершающим нулем.

Оператор "+" можно использовать для конкатенации одного string-объекта с другим или string-объекта со строкой, созданной в С-стиле (С-строкой). Другими словами, поддерживаются следующие операции.

string-объект + string-объект

string-объект + С-строка

С-строка + string-объект

Оператор "+" позволяет также добавлять символ в конец строки.

В классе string определена константа npos, которая равна -1. Она представляет размер строки максимально возможной длины.

Строковый класс C++ существенно облегчает обработку строк. Например, используя string-объекты, можно применять оператор присваивания для назначения string-объекту строки в кавычках, оператор "+" — для конкатенации строк и операторы сравнения — для сравнения строк. Выполнение этих операций демонстрируется в следующей программе.

// Программа демонстрации обработки строк.

#include <iostream>

#include <string>

using namespace std;

int main()

{

 string str1("Класс string позволяет эффективно ");

 string str2("обрабатывать строки.");

 string str3;

 // Присваивание string-объекта.

 str3 = str1;

 cout << str1 << "\n" << str3 << "\n";

 // Конкатенация двух string-объектов.

 str3 = str1 + str2;