Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции C++.doc
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
1.44 Mб
Скачать

9.7 Класс string

Класс string представляет собой реализацию класса строки. По очевидным причинам он не является шаблонным классом – строка состоит из символов, поэтому объявление типа в качестве параметра здесь не требуется.

Класс string определяет ряд операторов, представляющих типичные операции, выполняемые над строками. В число этих операторов входят:

  • operator<< - оператор вставки строки в поток вывода – предназначен для вывода строк на экран, в файлы и т.д.;

  • operator>> - оператор извлечения строки из потока ввода – предназначен для ввода строк с клавиатуры, чтения из файлов и т.д.;

  • operator= - оператор присваивания строк;

  • operator+ - оператор сложения (конкатенации) двух объектов string, объекта string с обычной строкой языка C, т.е. char*, и объекта string с одиночным символом;

  • operator<, operator>, operator<=, operator>=, operator==, operator!= - операторы сравнения строк.

Рассмотрим примеры, иллюстрирующие использование объектов класса string и его операторов.

#include <string>

#include <iostream.h>

using namespace std;

void main()

{

string message = "Hello! This is the insertion operator.";

cout << message << endl;

}

Вывод программы:

Hello! This is the insertion operator.

В этой программе объявляется объект message класса string и инициализируется строкой при объявлении. Затем строка выводится на экран с использованием оператора <<.

Следующий пример:

#include <string>

#include <iostream.h>

using namespace std;

void main()

{

string s;

cout << "Enter a word: ";

cin >> s;

cout << "You entered: " << s << endl;

}

Пример ввода/вывода программы:

Enter a word: test

You entered: test

Здесь объявляется строка s, но не инициализируется. Затем используется оператор >> для ввода значения строки с клавиатуры, после чего содержимое строки выводится на экран с помощью оператора <<.

Пример на сложение и присваивание строк:

#include <string>

#include <iostream.h>

using namespace std;

void main()

{

string result;

string s1 = "ABC";

string s2 = "DEF";

char cp1[] = "GHI";

char c = 'J';

cout << "s1 is " << s1 << endl;

cout << "s2 is " << s2 << endl;

cout << "cp1 is " << cp1 << endl;

cout << "c is " << c << endl;

result = s1 + cp1; // Сложение string и char* (result = “ABCGHI”)

cout << "s1 + cp1 is " << result << endl;

result = cp1 + s1; // Сложение char* и string (result = “GHIABC”)

cout << "cp1 + s1 is " << result << endl;

result = s1 + s2; // Сложение двух string (result = “ABCDEF”)

cout << "s1 + s2 is " << result << endl;

result = s1 + c; // Сложение string и char (result = “ABCJ”)

cout << "s1 + c is " << result << endl;

result = c + s1; // Сложение char и string (result = “JABC”)

cout << "c + s1 is " << result << endl;

}

Вывод программы:

s1 is ABC

s2 is DEF

cp1 is GHI

c is J

s1 + cp1 is ABCGHI

cp1 + s1 is GHIABC

s1 + s2 is ABCDEF

s1 + c is ABCJ

c + s1 is JABC

В этой программе объявляются три объекта string (s1, s2, result), одна строка языка C (массив char с именем cp1) и одна символьная переменная (c). Затем демонстрируется использование оператора + для сложения объектов string с объектами string, строками языка C и отдельными символами. Результаты всех операций выводятся на экран.

Приведем еще один пример, в котором иллюстрируется использование оператора проверки на равенство. Остальные операторы сравнения используются сходным образом.

#include <string>

#include <iostream.h>

using namespace std;

void main()

{

string s1="ABC";

string s2="ABC";

string s3="DEF";

cout << "s1 is " << s1 << endl;

cout << "s2 is " << s2 << endl;

cout << "s3 is " << s3 << endl;

if(s1 == s2) cout << "s1 and s2 are equal" << endl;

else cout << "s1 and s2 are NOT equal" << endl;

if(s1 == s3) cout << "s1 and s3 are equal" << endl;

else cout << "s1 and s3 are NOT equal" << endl;

}

Вывод программы:

s1 is ABC

s2 is ABC

s3 is DEF

s1 and s2 are equal

s1 and s3 are NOT equal