Определение текстовой строки

Текстовые строки как массивы символов

Ввод массивов

Ввод массивов также осуществляется с помощью циклических алгоритмов.

Простейший алгоритм ввода значений элементов одномерного массива может выглядеть так:

const int n = 10;

short A[n];

cout << "Введите " << n << " целых чисел: \n"

for (int i = 0; i < n; ++i)

cin >> A [i];

cin.sync(); // Очистка потока ввода от возможных лишних введенных чисел

В этом фрагменте ввод значений элементов массива можно осуществлять и в виде строки целых чисел, разделенных пробелами или символами табуляции, и по одному значению с помощью клавиши Enter. Обратите внимание на последнюю строку этого фрагмента. Эта инструкция очищает поток ввода от оставшихся в нем данных. Если в потоке ввода после окончания цикла останутся какие-либо данные (например, мы ввели не 10 требуемых значений, а ошибочно 11 чисел), то следующие за циклом инструкции ввода возьмут их из потока, что может привести к неправильной работе программы.

Следующий фрагмент обеспечивает ввод значений элементов массива с указанием номеров вводящихся элементов:

const int n = 10;

short A[n];

cout << "Введите " << n << " целых чисел: \n"

for (int i = 0; i < n; ++i)

{

cout << i + 1 << ": ";

cin >> arr[i];

cin.sync(); // Очистка потока ввода от возможных лишних введенных чисел

}

При заполнении двумерных массивов ввод значений элементов лучше осуществлять в табличной форме:

const int n = 10, m = 5;

short A [n] [m];

cout << "Введите " << n << " строк из "<< m << " целых чисел: \n"

for (int i = 0; i < n; ++i)

{

cout << "Строка " << i + 1 << ": ";

// Вводим поэлементно значения i-й строки массива

for (int j = 0; j < m; ++j)

cin >> A [i] [j];

// Очищаем поток ввода от возможных лишних введенных чисел

cin.sync();

}

В языке C++ текстовая строка представляет собой набор символов, обязательно заканчивающийся нулевым символом (‘ \0 ’) Текстовые строки представляются с помощью одномерных массивов символов.

Для хранения текстовых строк из m символов необходимо определить одномерный массив символов с количеством элементов, равным m + 1:

const m = 20;

char Str [m + 1];

или

char Str [21];

Переменная Str может использоваться для хранения текстовых строк, содержащих не более 20 символов (максимум 20 обычных символов + нулевой символ ‘\0’).

Нулевой символ позволяет определить границу между содержащимся в строке текстом и неиспользованной частью строки.

При определении строковых переменных их можно инициализировать конкретными значениями с помощью строковых литералов:

char S1 [15] = “This is text”;

char S2 [ ] = “Это пример текста”;

char S3 [20] = “”;

char S4 [ 5 ] = “Error”;

Картинка памяти для строки S1 будет такой:

                             
‘T’ ‘h’ ‘i’ ‘s’ ‘ ’ ‘i’ ‘s’ ‘ ’ ‘t’ ‘e’ ‘x’ ‘t’ ‘\0’    

Последние два элемента переменной S1 в данном случае не используются.

Строка S2 автоматически подстраивается под длину инициализирующего текста (плюс нулевой символ) и будет содержать 18 символов.

Строка S3 инициализируется “пустой” строкой “” и содержит один нулевой символ ‘\0’.

Попытка инициализировать строку S4 словом “Error” закончится неудачей, так как в переменную S4, имеющую размер в 5 символов, можно записывать тексты с максимальным количеством символов не более 4.

При работе со строками можно обращаться к отдельным символам строки как в обычном одномерном массиве с помощью индексов:

cout << S1[6]; // На экран будет выведен символ ‘s’

Если строка формируется программно, необходимо в конец ее обязательно записать нулевой символ ‘\0’:

char Str[21];

int i = 0;

for (char c = ‘A’; i < 6; i++, c++)

Str [i] = c;

Str [i] = ‘\0’; // “закрываем” строку нулевым символом

cout << Str << endl; // на экран выведено: ABCDEF

Если не добавить нулевой символ, то на экран будут выведены все 21 символов массива Str. Значения последних 14 символов предсказать невозможно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: