545.27K
Категория: ПрограммированиеПрограммирование

lec8

1.

Символы и строки
С++

2.

Символы
Символ – элементарная единица, некоторый набор которых несет
определенный смысл.
char symbol = 'a';
Строки в С++ представляются как массивы элементов типа char,
заканчивающиеся нуль-терминатором '\0' называются С
строками или строками в стиле С.
char string[5];
char string[5] = "abcd";
char string[5] = {'a', 'b', 'c', 'd', '\0'};
char string[] = "abcd";

3.

Пример

4.

Функции работы с символами и строками
Функция
strlen(имя_строки)
strcpy(s1,s2)
strncpy(s1,s2, n)
strcat(s1,s2)
strncat(s1,s2,n)
strcmp(s1,s2)
strncmp(s1,s2,n)
stricmp(s1,s2)
strnicmp(s1,s2,n)
Пояснение
определяет длину указанной строки, без учёта нуль-символа
Копирование строк
выполняет побайтное копирование символов из строки s2 в строку s1
выполняет побайтное копирование n байт из строки s2 в строку s1. возвращает значения s1
Конкатенация строк
объединяет строку s2 со строкой s1. Результат сохраняется в s1
объединяет n символов строки s2 со строкой s1. Результат сохраняется в s1
Сравнение строк
сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 – если строки
эквивалентны, -1– если s1<s2, 1 – если s1>s2 С учётом регистра
сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 – если
строки эквивалентны, -1 – если s1<s2, 1 – если s1>s2 С учётом регистра
сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 – если строки
эквивалентны, -1 – если s1<s2, 1 – если s1>s2 Без учёта регистра
сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 – если
строки эквивалентны, -1 – если s1<s2, 1 - если s1>s2 Без учёта регистра

5.

Функции работы с символами и строками
Функция
isalnum(c)
isalpha(c)
isdigit(c)
islower(c)
isupper(c)
isspace(c)
toupper(c)
Пояснение
Обработка символов
возвращает значение true, если с является буквой или цифрой, и false в других
случаях
возвращает значение true, если с является буквой, и false в других случаях
возвращает значение true, если с является цифрой, и false в других случаях
возвращает значение true, если с является буквой нижнего регистра, и false в
других случаях
возвращает значение true, если с является буквой верхнего регистра, и false в
других случаях
возвращает значение true, если с является пробелом, и false в других случаях
если символ с, является символом нижнего регистра, то функция возвращает
преобразованный символ с в верхнем регистре, иначе символ возвращается без
изменений.

6.

Функции работы с символами и строками
Функция
strchr(s,c)
strcspn(s1,s2)
strspn(s1,s2)
strprbk(s1,s2)
atof(s1)
atoi(s1)
atol(s1)
Пояснение
Функции поиска
поиск первого вхождения символа с в строке s. В случае удачного поиска возвращает указатель на
место первого вхождения символа с. Если символ не найден, то возвращается ноль.
определяет длину начального сегмента строки s1, содержащего те символы, которые не входят в
строку s2
возвращает длину начального сегмента строки s1, содержащего только те символы, которые
входят в строку s2
Возвращает указатель первого вхождения любого символа строки s2 в строке s1
Функции преобразования (stdlib.h)
преобразует строку s1 в тип double
преобразует строку s1 в тип int
преобразует строку s1 в тип long int
#include <cstring>
#include <string.h>

7.

Пример
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char s2[28] = "Hello, I am glad to see you"; // инициализация строки s2
cout << strlen(s2) << endl; // вычисление длины строки s2
char s1[28]; // резервируем строку для функции strcpy()
strcpy(s1,s2); // содержимое строки s2 скопировалось в строку s1
cout << "s1 = " << s1 << endl; // вывод содержимого строки s1
char s3[6]; // резервируем строку для следующей функции
strncpy(s3, s2, 5); // копируем 7 символов из строки s2 в строку s3
cout << strlen(s3) << endl;
cout << "s3 = " << s3 << endl; // вывод содержимого строки s3
return 0;
}

8.

Пример
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char s1[29] = "I am ";
char s2[] = "programmer on the C++!!!";
strcat(s1,s2); //объединяем строки s1 и s2, результат сохраняется в s1
cout << s1 << endl;
char s3[26] = "I am a good ";
strncat(s3,s2,10);
strcat(s3,"!!!");
cout << s3 << endl;
return 0;
}

9.

Пример
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char s1[] = "I am glad to see you";
char s2[] = "Hello, I am glad to see you";
char s3[] = "Hello";
cout << "Is s1 == s1 ? " << strcmp(s1,s1) << endl; // строка s1 = s1
cout << "Is s1 == s2 ? " << strcmp(s1,s2) << endl; // строка s1 > s2
cout << "Is s2 == s1 ? " << strcmp(s2,s1) << endl; // строка s2 < s1
cout << "Is s2 == s3 ? " << strcmp(s2,s3) << endl; // строка s2 > s3
char s4[] = "cat";
char s5[] = "dog";
cout << "Is s4 == s5 ? " << strcmp(s4,s5) << endl; // строка s4 < s5
char s6[] = "Kate";
char s7[] = "Tom";
cout << "Is s6 == s7 ? " << strcmp(s6,s7) << endl; // строка s6 < s7
char s8[] = "tom";
cout << "Is s7 == s8 ? " << strcmp(s7,s8) << endl; // строка s7 < s8
cout << "Is s7 == s8 ? " << stricmp(s7,s8) << endl; // строка s7 = s8 без учета регистра
return 0;
}

10.

Пример
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char symbol = 'd', digit = '9', space = ' ', character = '#';
cout << symbol << " - it is digit or alpha?: ";
isalnum(symbol) ? cout << "true\n" : cout << "false\n";
cout << symbol << " - it is alpha?:
";
isalpha(symbol) ? cout << "true\n" : cout << "false\n";
cout << digit << " - it is digit?:
";
isdigit(digit) ? cout << "true\n" : cout << "false\n";
cout << space << " - it is space?:
";
isspace(space) ? cout << "true\n" : cout << "false\n";
cout << symbol << " - it is lower alpha?:
";
islower(symbol) ? cout << "true\n" : cout << "false\n";
cout << symbol << " - it is upper alpha?:
";
isupper(symbol) ? cout << "true\n" : cout << "false\n";
return 0;
}

11.

Класс string
Чтобы использовать возможности класса string, нужно
подключить библиотеку <string> и пространство имен std.
#include <string>
using namespace std;

12.

Конструкторы класса string

13.

Преимущества класса string
возможность обработки строк стандартными операторами
C++ (=, +, = =, <> и т.п.);
обеспечение лучшей надежности программного кода;
обеспечение строки, как самостоятельного типа данных.

14.

Операторы применимые к классу string
= – присваивание
+ – конкатенация (объединение строк)
+= – присваивание с конкатенацией
== – равенство
!= – неравенство
< – меньше
<= – меньше или равно
> – больше
>= – больше или равно
[ ] – индексация

15.

Примеры

16.

Методы класса string
У строк есть разные методы, многие из них можно использовать
несколькими разными способами (с разным набором
параметров).
Рассмотрим эти методы на примерах.

17.

Метод присваивания assign

18.

Метод конкатенации строк append

19.

Метод вставки insert

20.

Метод замены replace

21.

Метод удаления erase

22.

Метод поиска find

23.

Метод поиска rfind

24.

Метод сравнения строк compare

25.

Метод len – длина строки

26.

Другие методы
English     Русский Правила