Скачать презентацию Информатика и программирование Строки Полежаев Петр Николаевич vk Скачать презентацию Информатика и программирование Строки Полежаев Петр Николаевич vk

Лекция 7 - Строки.ppt

  • Количество слайдов: 15

Информатика и программирование Строки Полежаев Петр Николаевич vk: vkontakte. ru/polezhaevw icq: 319280157 agent: polezhaevw@mail. Информатика и программирование Строки Полежаев Петр Николаевич vk: vkontakte. ru/polezhaevw icq: 319280157 agent: polezhaevw@mail. ru e-mail: peter. polezhaev@gmail. com

Понятие строки Специального строкового типа в C++ нет. Строка – массив элементов типа char, Понятие строки Специального строкового типа в C++ нет. Строка – массив элементов типа char, заканчивающийся нулевым символом (символом с кодом 0 - ‘’). Размер строки должен быть на 1 больше максимально допустимой длины строки. Примеры: char name[15] = “Vasya”; char s[100];

Инициализация строк осуществляется также, как и инициализация массивов: char s[100] = “Hello”; эквивалентно char Инициализация строк осуществляется также, как и инициализация массивов: 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;

Функции для работы со строками Заголовочный файл <string. h> (<cstring> в языке С++) содержит Функции для работы со строками Заголовочный файл ( в языке С++) содержит следующие функции для работы со строками: Объявление функции Назначение int strlen(char* s); Возвращает длину строки s int strcmp(char *s 1, char* s 2) Возвращает 0, если строки s 1 и s 2 совпадают, отрицательное значение, если s 1 меньше s 2, положительное значение, если s 1 больше s 2 char* strcpy(char* s 1, char* s 2) Копирует строку s 2 в строку s 1 char* strcat(char* s 1, char* s 2) Приписывает строку s 2 в конец строки s 1 char* strchr(char* s, char ch) Возвращает указатель на позицию первого вхождения символа ch в строку s char* strstr(char* s 1, char* s 2) Возвращает указатель на позицию первого вхождения строки s 2 в строку s 1

Определение длины строки осуществляется с помощью функции strlen из заголовочного файла <cstring>. Пример: char Определение длины строки осуществляется с помощью функции strlen из заголовочного файла . Пример: char surname[100]; int leng; cout << “Your surname : ”; cin. get(surname, sizeof surname); leng = strlen(surname); cout << “Length of your surname is ” << leng << endl; Функция strlen при подсчете количества символов не учитывает нулевой символ.

Сравнение двух строк Сравнение строк осуществляется с помощью функции strcmp из заголовочного файла <cstring>. Сравнение двух строк Сравнение строк осуществляется с помощью функции strcmp из заголовочного файла . Пример: const char secret. Password[] = "qwe 123"; char entered. Password[31]; cout << "Enter password : "; cin. get(entered. Password, sizeof entered. Password); if (!strcmp(secret. Password, entered. Password)) cout << "Access allowed" << endl; else cout << "Access denied!" << endl;

Копирование одной строки в другую осуществляется с помощью функции strcpy из заголовочного файла <cstring>. Копирование одной строки в другую осуществляется с помощью функции strcpy из заголовочного файла . Пример: char s 1[100]; char s 2[100]; cout << "Enter s 1 : "; cin. get(s 1, sizeof s 1); strcpy(s 2, s 1); cout << "s 1 = " << s 1 << endl; cout << "s 2 = " << s 2 << endl;

Объединение (конкатенация) строк Объединение строк осуществляется с помощью функции strcat из заголовочного файла <cstring>. Объединение (конкатенация) строк Объединение строк осуществляется с помощью функции strcat из заголовочного файла . Пример: char s[101] = "Hello "; char name[101]; cout << "Your name : "; cin. get(name, sizeof name); strcat(s, name); cout << s << endl;

Функции преобразования Заголовочный файл <stdlib. h> (или <cstdlib> для языка С++) содержит функции преобразования Функции преобразования Заголовочный файл (или для языка С++) содержит функции преобразования данных строка <-> число. Функции для преобразовании строки в int, long, double: double atof(char* s); int atoi(char* s); long atol(char* s);

Функции преобразования (продолжение) Преобразование int, long, unsigned long в строку: char* itoa (int num, Функции преобразования (продолжение) Преобразование 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 Функции преобразования (пример) 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 Неэффективный Работа со строками, как с указателями Пример: копирование строки 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;