- •Основные понятия
- •Определение С-строк
- •строка как массив символов
- •строка как указатель на char
- •особенности работы с С-строками в С++
- •Операции со строками
- •Инициализация строки
- •Возможные ошибки при работе со строками
- •Ввод-вывод строк
- •преобразование значения базового типа в С-строку
- •ввод ограниченного числа символов строки
- •функция вывода строки
- •особенности посимвольного вывода строки
- •Копирование строк
- •Оптимизация текста программы на примере функции копирования
- •Функции для работы с С-строками
- •Определение длины строки
- •Копирование строк
- •Объединение строк
- •Сравнение строк
- •Поиск символа в строке
- •Проверка принадлежности символа некоторому множеству
- •Поиск строки в строке
- •Преобразование и заполнение строк
- •преобразование строки в число
- •преобразование строчных символов строки в прописные и наоборот
- •реверс строки
- •заполнение строки символом
- •пример применения функций преобразования
- •Выделение лексем
- •Динамические строки
- •Копирование строки в динамическую строку
- •Передача строки в функцию в качестве параметра
- •Пример_1: в main()– строка-массив; в функции – строка-указатель
- •Пример_2: в main() – строка-указатель; в функции – строка-указатель
- •Передача в функцию массива строк
- •Примеры работы со строками
- •Определение длины строки с помощью функции пользователя
- •Реверс строки (перегрузка функций)
- •Удаление начальных пробелов из строки
- •Проверка, является ли строка целым числом
- •Проверка, является ли строка 16-ичным целым числом
- •Проверка, является ли строка дробным числом без знака
- •Перевод двоичного числа в десятичное
- •Перевод шестнадцатеричного числа в десятичное
- •Перевод десятичного числа в двоичное
- •Перевод десятичного числа в с/с от 2-х до 10
- •Перевод десятичного числа в шестнадцатеричное
- •Определение количества слов в фразе
- •Выделение слов в тексте по нажатию произвольной клавиши
- •Сортировка вводимых с клавиатуры строк *
- •Сортировка строк в зависимости от признака, передаваемого функции main() через аргумент argv *
- •Инвертирование строки с помощью рекурсивной функции
Строку-константу можно задать с помощью директивы препроцессора и с помощью
модификатора const:
#define OTVET1 "odin" //препроцессорная строка-константа const char str[3] ="dwa"; // типизированная строка-константа
Определение С-строк
строка как массив символов
const int n=10; char st [n];
char empty_str [ ]= "";
//строка-массив //нулевая (пустая) строка;
Равносильны определения строк: |
|
char st1 [] = "Minsk"; |
//'\0' добавляется в конец строки автоматически |
char st2 [6] = "Minsk";
char st3 [6] = {'M', 'i', 'n', 's', 'k', '\0'};
строка как указатель на char
char *st = “Minsk”; |
//строка-указатель |
char *empty_str = ""; |
// нулевая (пустая) строка; |
строка как элемент массива строк1
char den[][10]= {"poned", "vtor", "sreda", "chetv", "pjatn", "sub", "voskr"};
строка как элемент массива указателей на char2
char *otvet1[] = {"odin", "dwa"};
особенности работы с С-строками в С++
•для представления С-строк используются массивы элементов типа char, содержащие в конце последовательности значащих символов код ’\0’;
•С-строка ограничена размером массива, который выделен для ее представления; размер нединамической С-строки должен быть задан только константным выражением;
•cтрока может быть проинициализирована как поэлементно символьными значениями (с обязательным завершающим символом ‘\0’), так и значением строкового литерала (завершающий символ ‘\0’ формируется в этом случае в конце строки автоматически);
•нулевая строка – это строка, которая начинается с 0-символа ‘\0’ (ее длина равна нулю, но в памяти она может занимать больше одного байта); нулевой указатель на строку (char *p_str = NULL;) не является эквивалентом нулевой строки;
•текущая длина строки отслеживается в процессе выполнения действий над строкой;
1Об этих способах определения строк мы поговорим чуть позже в данной лекции
2Об этих способах определения строк мы поговорим чуть позже в данной лекции
Программирование – лекция 13 (лекции Стрикелевой Л.В.) |
3 |
|