Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_DZ_PiOA1_2012.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
669 Кб
Скачать
☆

1. Цель работы

Изучить и освоить методы составления программ на языке С++ с использованием строк.

  1. Подготовка к работе

Необходимо знать основные особенности представления символов и строковых литералов в языке С++ [лекции 10, 14], способы их обработки, основные функции используемые для сравнения, копирования строк, вырезания и поиска подстроки (символа) в строке.

  1. Теоретическая часть:

Для представления текстовой информации в языке С++ используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С++ не введено отдельного типа в отличие от некоторых других языков программирования. Строка– это последовательность символов, заключенная в двойные кавычки (" ").

Размещая строку в памяти, транслятор автоматически добавляет в ее конце символ '\0' (нулевой символ или нулевой байт, который является признаком конца строки). В записи строки может быть и один символ: "А" (заключен в двойные кавычки), однако, в отличие от символьной константы 'А' (используются апострофы), длина строки "А"равна 2 байтам.

В языке С++ строка – это пронумерованная последовательность символов (массив символов), она всегда имеет тип char[]. Все символы строки нумеруются, начиная с нуля. Символ конца строки также нумеруется – ему соответствует наибольший из номеров. Таким образом, строка считывается значением типа "массив символов". Количество элементов в таком массиве на 1 больше, чем изображение соответствующей строки, так как в конец строки добавлен нулевой символ '\0' (рис. 1).

Рис. 1. Представление строки и символа

Символьная строка в программном коде может располагаться на нескольких строках. Для переноса используется символ '\' с последующим нажатием клавиши ввод. Символ '\' игнорируется компилятором, и следующая строка считается продолжением предыдущей.

В С++ есть два вида строк:

  • С-строки (символьные);

  • класс стандартной библиотеки С++ string.

С-строка – это массив символов, завершающийся символом с кодом 0 (нуль-терминатором). Класс string более безопасен в использовании, но и более ресурсоемок, чем С-строки. Исходя из этого, строки можно обрабатывать двумя способами:

- как массив;

- используя строковые функции, описания которых находятся в заголовочном файле string.h (класс cstring).

Каждый из способов имеет свои достоинства и недостатки.

Порядок работы со строкой:

  1. Описание строки (выделение памяти);

  2. Инициализация (ввод) строки;

  3. Обработка строк.

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

Описание строк.

Используется описатель:

char <имя_строки>[<длина>]

Длина динамической строки может быть выражением, не динамической строки – константным выражением (чаще всего константой):

const int len_s = 80;

char s[len_s]; //хранится 79 символов + 0-терминатор

При задании строки необходимо учитывать 0-терминатор.

Для размещения строки в динамической памяти:

char *p = new char[m]; // p – указатель на char

char *q = (char *)malloc(m * sizeof(char));

Инициализация (ввод) строк.

1) явная инициализация:

Строки при описании можно явно инициализировать строковыми константами:

char a[100] = “Строковая константа”;

или инициализировать как массив символов:

char str[10]={‘s’, ‘t’, ‘r’, ‘o’, ‘k’, ‘a’};

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

char a[] = “Строковая константа”; // выделено под 20 символов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]