Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 10 Символы и строки.doc
Скачиваний:
52
Добавлен:
29.02.2016
Размер:
166.4 Кб
Скачать

Глава 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");

}