Для типа
string
предусмотрено меньше операций, но, как будет показано в главе 23, для него создано много специальных функций. Тем не менее к ним можно применять обычные операторы, как показано в следующем примере:
// ввод имени и отчества
int main()
{
cout << "Пожалуйста, введите свое имя и отчество \n";
string first;
string second;
cin >> first >> second; // считываем две строки
string name = first + ' ' + second; // конкатенируем строки
cout << "Hello, " << name << '\n';
}
Для строк оператор
+
означает конкатенацию; иначе говоря, если переменные
s1
и
s2
имеют тип
string
, то
s1+s2
является строкой, в которой вслед за символами строки
s1
следуют символы строки
s2
. Например, если строка
s1
имеет значение "
Hello
", а строка
s2
— значение "
World
", то
s1+s2
содержит значение "
HelloWorld
". Особенно полезным является сравнение строк.
// ввод и сравнение имен
int main()
{
cout << "Пожалуйста, введите два имени\n";
string first;
string second;
cin >> first >> second; // считываем две строки
if (first == second) cout << " имена совпадают \n";
if (first < second)
cout << first << " по алфавиту предшествует " << second <<'\n';
if (first > second)
cout << first << " по алфавиту следует за " << second <<'\n';
}
Здесь для выбора действия в зависимости от условия использована инструкция
if
, смысл которой будет подробно изложен в разделе 4.4.1.1.
3.5. Присваивание и инициализация
Одним из наиболее интересных операторов является присваивание, которое обозначается символом
=
. Этот оператор присваивает переменной новое значение. Рассмотрим пример.
int a = 3; // начальное значение переменной a равно 3
a = 4; // переменная а принимает значение 4
//("становится четверкой")
int b = a; // начальное значение переменной b является копией
// значения переменной a (т.е. 4)
b = a+5; // переменная b принимает значение a+5 (т.е. 9)
a = a+7; // переменная a принимает значение a+7 (т.е. 11)
Последнее присваивание заслуживает внимания. Во-первых, оно ясно показывает, что знак “равно” не означает равенства, поскольку очевидно, что
а
не равно
а+7
. Этот знак означает присваивание, т.е. помещение в переменную нового значения. Рассмотрим подробнее, что происходит при выполнении инструкции
a= a+7
.
1. Сначала получаем значение переменной
a
; оно равно целому числу
4
.
2. Затем добавляем к четверке семерку, получаем целое число
11
.
3. В заключение записываем значение
11
в переменную
a
.
Эту операцию можно продемонстрировать также на примере строк.
string a = "alpha"; // начальное значение переменной a равно "alpha"
a = "beta"; // переменная a принимает значение "beta"
// (становится равной "beta")
string b = a; // начальное значение переменной b является
// копией значения переменной a (т.е. "beta")
b = a+"gamma"; // переменная b принимает значение a+"gamma"
// (т.е. "betagamma")