
Тема 7. Строки
Строки в C++
Строки являются одним из самых важных и часто используемых типов данных практически в любом языке программирования, и представляют собой последовательности символов. В языке C++ для работы со строками предусмотрен тип string, для работы с которым требуется подключение специальной библиотеки:
#include <string>
В частности, если не подключить эту библиотеку, то не будет возможности вводить и выводить строки при помощи операторов cin и cout. Для того, чтобы освежить в памяти простейшие операции со строками, посмотрим на программу, которая принимает с клавиатуры имя человека и приветствует его по имени.
//Объявление переменной для имени
string name;
//Приглашение ввести имя
cout << "Введите Ваше имя: ";
//Ввод имени
cin >> name;
//Приветствие по имени
cout << "Привет, " << name << "!\n";
Объявление, инициализация и присвоение строк
Объявление строки происходит стандартным способом: указывается тип string и имя переменной.
string name;
string str1, str2, str3;
Обратите внимание, что, как и другие переменные, строки можно объявлять как по одной, так и сразу несколько, разделяя их запятыми.
При инициализации строки мы ее объявляем и сразу же присваиваем:
//Инициализация переменной name
string name = "Андрей";
cout << "Привет, " << name << "!\n";
Как и любую другую переменную строку можно ввести при помощи оператора cin:
string name;
cout << "Введите Ваше имя: ";
//Ввод имени
cin >> name;
cout << "Привет, " << name << "!\n";
Объявленную строку также можно присвоить стандартным способом при помощи оператора =
//Объявление строки name
string name;
//Присвоение строки name
name = "Андрей";
cout << "Привет, " << name << "!\n";
Выводить строки можно при помощи оператора cout. Подчеркнем еще раз, что для ввода и вывода строк операторами cin и cout требуется подключение библиотеки string.
Строки и символы: кавычки или апострофы?
Вы, наверное, уже заметили, что нами были использованы как апострофы 'H', так и кавычки "Моя строка". Причина такого различия заключается в том, что символ, заключенный в апострофы имеет тип char, а несколько символов (в частности, и один символ), заключенных в кавычки являются строкой. Получается, что 'H' – это просто символ, а "H" – уже строка. Набор символов, заключенных в кавычки, называется строковой константой, значение которой изменять нельзя. Строковую константу можно задать директивой #define:
#define GREETING "Hello, my dear friend!"
...
cout<< GREETING;
Ввод строк из нескольких слов
Оператор cin вводит строку до первого разделителя, которым являются переводы на новую строку, пробел, знаки табуляции и некоторые другие специальные символы. По этой причине, если введена строка из нескольких слов, то во вводимую переменную запишется только первое слово. Посмотрите на следующий пример:
string my_string;
cout << "введите строку:\n";
cin >> my_string;
cout << "Введена следующая строка:\n";
cout << my_string << endl;
Для ввода строки с пробелами следует воспользоваться функцией getline():
string my_string;
cout << "введите строку:\n";
getline(cin, my_string);
cout << "Введена следующая строка:\n";
cout << my_string << endl;