Теоретические сведения. Для представления текстовой информации в языке С++ используются символы (константы), символьные переменные и строки (строковые константы)
Для представления текстовой информации в языке С++ используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С++ не введено отдельного типа в отличие от некоторых других языков программирования.
Для символьных данных в С++ введен тип char. Описание символьных переменных:
char список_имен_переменных;
Например:
const char c='c';
//символ – занимает один байт, его значение не меняется
char a,b;
/*символьные переменные, занимают по одному байту,
значения меняются*/
const char *s="Пример строки\n";
//текстовая константа
Строка – это последовательность символов, заключенная в двойные кавычки (" ").
Размещая строку в памяти, транслятор автоматически добавляет в ее конце символ '\0' (нулевой символ или нулевой байт, является признаком конца строки). В записи строки может быть и один символ: ”А” (заключен в двойные кавычки), однако, в отличие от символьной константы 'А' (используются апострофы) длина строки ”А” равна 2 байтам.
В языке С++ строка – это пронумерованная последовательность символов (массив символов), она всегда имеет тип char[]. Все символы строки нумеруются, начиная с нуля. Символ конца строки также нумеруется – ему соответствует наибольший из номеров. Таким образом, строка считывается значением типа «массив символов». Количество элементов в таком массиве на 1 больше, чем изображение соответствующей строки, так как в конец строки добавлен нулевой символ '\0' (рис.).
A | \0 | A | |
”А” строка (2 байта) | 'А' символ (1 байт) |
Рис. Представление строки и символа
Символьная строка в программном коде может располагаться на нескольких строках. Для переноса используется символ '\' с последующим нажатием клавиши ввод. Символ '\' игнорируется компилятором, и следующая строка считается продолжением предыдущей.
Присвоить значение строке с помощью оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации:
char s1[] = ”ABCDEF”; //инициализация строки
char s2[]={'A','B','C','D','E','F','\0'};//инициализация строки
Операция вычисления размера (в байтах) sizeof действует для объектов символьного типа и строк.
Пример 1.
// Определение размера строк
#include <iostream.h>
void main() {
char s1[10]="string1";
int k=sizeof(s1);
cout<<s1<<"\t"<<k<<"\n";
char s2[]="string2";
k=sizeof(s2);
cout<<s2<<"\t"<<k<<"\n";
char s3[]={'s','t','r','i','n','g','3','\0'};
/*окончание строки '\0' следует соблюдать, формируя
в программах строки из отдельных символов*/
k=sizeof(s3);
cout<<s3<<"\t"<<k<<"\n";
char *s4="string4";
//указатель на строку, ее нельзя изменить
k=sizeof(s4);
cout<<s4<<"\t"<<k<<"\n";
}
Результат выполнения программы:
string1 10 – выделено 10 байтов, в том числе под '\0'
string2 8 – выделено 8 байтов (7 + 1 байт под '\0')
string3 8 – выделено 8 байтов (7 + 1 байт под '\0')
string4 2 – размер указателя 2 байта
Дата добавления: 2015-02-16; просмотров: 626;