Глава 10. Символы и строки
Символы
символьные переменные, константы
ввод, вывод символов
Строки
строки как массивы символов
строки и указатели
строки и функции
стандартные функции обработки строк
выделение слов в строке
Символы
Для представления символов в С++ используется тип данных char. Данные типа char занимают в памяти 1 байт. Код от 0 до 255 в этом байте задаёт один из 256 возможных символов.
Символьные переменные, константы
Символьные переменные используются для хранения 8-разрядных ASCII-символов (например, букв A, H или Б) либо любых других 8-разрядных значений. Код символа является его порядковым номером в таблице ASCII.
Символьная константа состоит из одного символа, заключённого в одинарные кавычки – 'f', 'k', '!'. К разряду символьных констант относятся и специальные символы: '\t' – символ горизонтальной табуляции, '\r' – символ возврата каретки, '\0' – нуль-символ и др.
Тип char является типом "целое", т.е. хотя он и предназначен для представления символов, но может поддерживать целочисленные значения в диапазоне от -128 до 127 (со знаком – [signed] char) или от 0 до 255 (без знака – unsigned char).
Итак, значением символьной переменной, константы является целое число. Например, символ '0' в коде ASCII имеет значение равное 00110000 (в 2 с/с) = 30 (в 16 с/с) = 48 (в 10 с/с). Символьные переменные, константы (точнее их коды) могут участвовать в операциях над целыми числами так же, как и другие целые числа. Поэтому в языке С++ можно выполнить следующие операции с символами:
char a = '5', b = '3';
cout<<a<<' '<<b<<' '<<a % b<<' '<<a / b<<'\n'; // 5, 3 5, 2, 1
// код символа '5' равен 53, код символа '3' равен 51,
Следует отметить, что чаще всего символы используют для сравнения с другими символами.
Ввод, вывод символов
Ввод символов с клавиатуры можно выполнять с помощью стандартного потока ввода cin. Результат в этом случае зависит от того, что мы вводим:
char a, b; cin>>a>>b; // введём 53
cout<<a<<' '<<b<<' '<<a % b<<' '<<a / b<<'\n'; // 5, 3, 2, 1
char a, b; cin>>a>>b; // введём 123
cout<<a<<' '<<b<<' '<<a % b<<' '<<a / b<<'\n'; // 1, 2, 49, 0
// символ 3 при вводе игнорируется
Символы лучше вводить с помощью специальных функций, например, getchar():
cout<<"Vvedi simvol: ";
char simv = getchar(); // ввод одного символа
Вывод символов на экран можно выполнять операцией <<, используя стандартный поток вывода cout:
cout<<"simv = "<<simv<<endl;
Анализ символов можно осуществлять, используя стандартные функции, подключив для этого необходимые заголовочные файлы. Например, можно проанализировать, является ли введённый символ цифрой или нет, c помощью функции isdigit():
if(isdigit(simv))cout<<1<<endl; // если символ – цифра, будет
else cout<<0<<endl; // выведена 1, иначе – 0
// Пример 10.1. Вывод на экран символов кодовой таблицы ASCII.
#include <iostream>
using namespace std;
int main(){
unsigned char ch;
ch = 32; int k;
while(ch){
cout<<ch<<' ';
ch++; // если к 255 прибавить 1, то
} //сбрасывается в 0, и цикл завершается
cout<<endl;
for(int j = 32; j < 128; j++){
k = rand() % 96 + 32; // символы с кодами от 32 до 127;
cout<<k<<' '<<char(k)<<' '; // прибавляем 32, чтобы не включать
} // управляющие символы
cout<<endl;
system("pause");
}