§ 9. Строковые величины
9.1. Ввод, вывод, присваивание строковых величин
Cо строковым типом данных вы познакомились в прошлом году. В языке С++ тоже есть тип данных, который позволяет работать со строковыми величинами. Переменные строкового типа в С++ описываются типом string (так же, как и в Pascal). Для работы с переменными типа string требуется подключить библиотеку, имя которой совпадает с именем типа: string. Строка состоит из набора последовательно расположенных символов и используется для хранения текста. Строки могут иметь произвольную длину. Строка, в которой нет ни одного символа, называется пустой. Строка описывается следующим образом: string <имя строки>; Если строка не содержит служебных символов, то ее можно вводить с помощью команды cin. Если в строке содержатся пробелы, или символы табуляции, или другие служебные символы, то в строку будут переданы символы до первого служебного, остальные символы будут проигнорированы. Для ввода строки со служебными символами используют команду getline(cin, s); Первый параметр этой команды — имя потока для ввода, а второй — имя переменной, в которую будет записана строка. Ввод заканчивается нажатием клавиши Enter. Символ, соответствующий нажатию этой клавиши, считывается, но к строке не добавляется. Для вывода строк используется команда cout (пример 9.1). С помощью команды присваивания переменной строкового типа можно присвоить значение. Значение строковой величины записывается в двойных кавычках. Пустая строка задается следующим образом: s = ""; Запись поясняющего текста при выводе в команде cout является строковой константой. К символам в строке можно обращаться, используя индекс. Нумерация символов начинается с нуля, s[i] соответствует i-му символу в строке s. |
Пример 9.1. Введем две строки (с помощью разных команд) и выведем их значения.
Тестирование: В первом случае строка считывается с помощью команды getline, поэтому прочитались и вывелись все символы. Во втором случае считались и вывелись символы до пробела. Если поменять местами команды вывода (сначала cin, потом getline), то результат будет следующим: У пользователя не будет возможности ввести вторую строку. В нее будут считаны символы, которые остались в буфере после ввода первой строки. Если возникает необходимость использовать команду cin вводится число, а затем с помощью getline сразу после команды cin, то нужно предварительно очистить буфер данных. Это можно сделать с помощью команды cin.ignore(200,'\n'); Первый параметр указывает, какое максимальное количество символов нужно проигнорировать, пока не встретится символ, указанный в качестве второго параметра. Команда cin.ignore(); (без параметров) игнорирует символ '\n'. Это может быть нужно, когда сначала с помощью cin вводится число, а затем с помощью getline считываются строки.
Без cin.ignore() первая строка будет пустой. |