Ввод и вывод строки

Еще одна особенность работы с символьными массивами – если элементы произвольного массива можно вводить с клавиатура и выводить на экран только по одному элементу в цикле, то в символьный массив можно ввести сразу всю строку, используя оператор ввода

cin >> Имя_массива;

и, аналогичным образом, вывести сразу всю строку на экран, используя оператор вывода

cout << Имя_массива;

Следует сразу отметить, что при вводе с клавиатуры строки оператор cin автоматически добавляет в конец строки нулевой символ, так что Вы должны учитывать этот факт при указании количества элементов при объявлении массива.

Например,

#include “iostream”using namespace std;void main(){ char str[31]; // объявление символьного массива cout<<"Enter a string (max 30 symbols):"; cin>>str; // ввод строки cout<<"\nYou enter string:"<<str; // вывод строки}

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

Второй способ определения строки - это использование указателя на символ. Объявление

char *b;

задает переменную b, которая может содержать адрес некоторого объекта. Однако в данном случае компилятор не резервирует место для хранения символов и не инициализирует переменную b конкретным значением. Сделать это можно, например, присвоив b указатель на уже существующий символьный массив, или динамически выделить память под новый массив. Например,

#include ”iostream”using namespace std;void main(){ char str[] = "Здравствуй, мир!"; // объявляем символьный массив char *b; // объявляем указатель на символ b = &str[12]; // теперь b указывает на 12-ый символ str *b = 'M'; // присваиваем первому элементу b символ 'М' cout << b; // выводим строку b на экран (Мир!)}

Итак, подведем итоги. Необходимо помнить:

1. Строку можно определить как массив символов или как указатель на символ.

2. Любая строка заканчивается нулевым символом. (Благодаря этому свойству Вы всегда можете определить конец строки, если у Вас строка занимает меньшее количество символов, чем то количество, которое было указано в квадратных скобках при объявлении массива).

3. Для строк возможна упрощенная начальная инициализация (в сравнении с не символьными массивами).

4. В символьный массив можно ввести сразу всю строку, используя оператор ввода cin>> Имя_массива;, и аналогичным образом вывести сразу всю строку на экран, используя оператор вывода cout<<Имя_массива;.

Наши рекомендации