Лекция 7 - Строки.ppt
- Количество слайдов: 15
Информатика и программирование Строки Полежаев Петр Николаевич vk: vkontakte. ru/polezhaevw icq: 319280157 agent: polezhaevw@mail. ru e-mail: peter. polezhaev@gmail. com
Понятие строки Специального строкового типа в C++ нет. Строка – массив элементов типа char, заканчивающийся нулевым символом (символом с кодом 0 - ‘ ’). Размер строки должен быть на 1 больше максимально допустимой длины строки. Примеры: char name[15] = “Vasya”; char s[100];
Инициализация строк осуществляется также, как и инициализация массивов: char s[100] = “Hello”; эквивалентно char s[100] = {‘H’, ‘e’, ‘l’, ‘ 0’, ‘ ’}; А также без указания размера массива: char s 1[] = “Preved”;
Ввод строки с консоли Для ввода строки с консоли используется метод стандартного потока ввода cin: cin. get(char* s, int num); s – строка, в которую помещается считанное с консоли значение; num – число, на 1 большее количества считываемых символов. Считывает с консоли не более num-1 символов и помещает их в строку s, а затем в конец добавляет символ ‘ ’. Пример сhar s[100]; cin. get(s, sizeof s);
Ввод строки с консоли (продолжение) Другой способ ввода строки с консоли отличается от предыдущего тем, что считывает в строку все вводимые символы до первого пробельного символа. Пример сhar s[100]; cin >> s; //В s будут сохранены все символы до //первого пробела
Печать строки на экран осуществляет точно также, как это делается для переменных стандартных типов. Пример: char name[] = “Vasya Pupkin”; cout << “My name is ” << name << endl;
Функции для работы со строками Заголовочный файл
Определение длины строки осуществляется с помощью функции strlen из заголовочного файла
Сравнение двух строк Сравнение строк осуществляется с помощью функции strcmp из заголовочного файла
Копирование одной строки в другую осуществляется с помощью функции strcpy из заголовочного файла
Объединение (конкатенация) строк Объединение строк осуществляется с помощью функции strcat из заголовочного файла
Функции преобразования Заголовочный файл
Функции преобразования (продолжение) Преобразование int, long, unsigned long в строку: char* itoa (int num, char* s, int base); char* ltoa (long num, char* s, int base); char* ultoa (unsigned long num, char* s, int base); num – преобразуемое число; s – строка, в которую сохраняется результат преобразования; base – основание системы счисления, в которой будет записано число num, преобразованное в строку s. Все функции возвращают указатель на начало строки s.
Функции преобразования (пример) const int MAX_STR_LENGTH = 40; char s[MAX_STR_LENGTH + 1]; int i = 25; unsigned long ul = 5; itoa(i, s, 10); cout << "i{10} = " << s << endl; itoa(i, s, 16); cout << "i{16} = " << s << endl; ultoa(ul, s, 10); cout << "ul{10} = " << s << endl; ultoa(ul, s, 2); cout << "ul{2} = " << s << endl; char si[MAX_STR_LENGTH + 1] = "123"; int a = atoi(si); double d = atof("1. 344"); cout << "a = " << a << endl; cout << "d = " << d << endl;
Работа со строками, как с указателями Пример: копирование строки s в строку t Неэффективный способ for (int i = 0; i<=strlen(s); i++) t[i] = s[i]; Эффективный способ char *st = s, *dt = t; while (*st != 0) *dt++ = *st++; *dt=0;