Строки символов
Тип данных char
Таблица ASCII
Строки как массивы
Строки как массивы
Строки как массивы
Строки как массивы
Строки как массивы
Строки как массивы
Ноль-символ
Escape-последовательности
Escape-последовательности
Escape-последовательности
Escape-последовательности
Одинарные и двойные кавычки
Ввод-вывод строк
Ввод-вывод строк
Ввод-вывод строк
Ввод-вывод строк
Ввод-вывод строк
Разделители
Простая замена
Простая замена
<cstring>
<cstring>
strlen
strlen
Сравнение
Сравнение
Сравнение
strcpy
strcpy
strcat
strcat
strchr
strstr
tolower/toupper
tolower/toupper
Простой подсчет
Простой подсчет
Простой подсчет
Простой подсчет
Подсчет слов
927.50K
Category: programmingprogramming

Lect6 – Строки символов

1. Строки символов

Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
1

2. Тип данных char

char x = 'a';
cout << x << ' ' << int(x) << endl;
x = 98;
cout << x << ' ' << int(x) << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
2

3. Таблица ASCII

char x;
for(x=-128;x<127;x++){
cout << x << "(" << int(x) << ")" << "\n";
}
cout << endl << endl;
unsigned char y;
for(y=0;y<255;y++){
cout << y << "(" << int(y) << ")" << "\n";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
3

4. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
int array[] = {1,2,3,4,5};
for(int i=0;i<5;i++){
cout << array[i] << " ";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
4

5. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
5

6. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
for(int i=0;i<5;i++){
cout << hello[i];
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
6

7. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
for(int i=0;i<5;i++){
cout << int(hello[i]) << endl;
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
7

8. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
char hello3[] = {‘H’,’e’,’l’,’l’,’o’};
cout << hello3<< endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
8

9. Строки как массивы

char hello[]="Hello";
cout << hello << endl;
char hello2[] = {‘H’,’e’,’l’,’l’,’o’,’\0’};
cout << hello2 << endl;
char hello3[] = {‘H’,’e’,’l’,’l’,’o’};
cout << hello3<< endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
9

10. Ноль-символ

char x = ‘\0’;
x = 0;
char hello[]="Hello, world!";
cout << hello << endl;
hello[3] = ‘\0’;
cout << hello;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
10

11. Escape-последовательности

• \0 – конец строки
• \n – перевод строки
• \t – табуляция
• \' – одиночная кавычка
• \" – двойная кавычка
• \\ – обратная косая черта
• …
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
11

12. Escape-последовательности

char escape[] = "Hello\tworld!\nIt's me!";
cout << escape << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
12

13. Escape-последовательности

char x = ''';
char y = '\'';
cout << y << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
13

14. Escape-последовательности

char x[] = "Here be the quotes -> " <- ";
char y[] = "Here be the quotes -> \" <- ";
cout << y << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
14

15. Одинарные и двойные кавычки

char x = 'a';
char y[] = "abcde";
char z[] = "a";
char a = "abc";
char b[] = 'a';
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
15

16. Ввод-вывод строк

char word[100];
cin >> word;
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
16

17. Ввод-вывод строк

char word[100];
cin >> word;
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
17

18. Ввод-вывод строк

char word[100];
cin.getline(word,100);
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
18

19. Ввод-вывод строк

char word[100];
scanf("%s", word);
printf("%s\n", word);
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
19

20. Ввод-вывод строк

char word[100];
gets(word);
printf("%s\n", word);
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
20

21. Разделители

• Пробел
• Перенос строки (“\n”)
• Табуляция (“\t”)
• Возврат каретки (“\r”)
• ….
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
21

22. Простая замена

• В строке заменить все вхождения буквы r
буквой w
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
22

23. Простая замена

const int SIZE = 100;
char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
for(int i=0;i<SIZE;i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
23

24. <cstring>

<cstring>
#include <cstring>
using namespace std;
#include “string.h”
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
24

25. <cstring>

<cstring>
• strlen
• strcmp
• strcpy
• strcat
• strchr
• strstr
• …
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
25

26. strlen

const int SIZE = 100;
char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
for(int i=0;i<strlen(word);i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
26

27. strlen

const int SIZE = 100;
char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
27

28. Сравнение

• Определить, одинаковы ли введенные
строки
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
28

29. Сравнение

const int SIZE = 100;
bool equal = true;
char word1[SIZE], word2[SIZE];
cin.getline(word1, SIZE);
cin.getline(word2, SIZE);
int len1 = strlen(word1);
int len2 = strlen(word2);
if(len1!=len2)
{
equal = false;
}
else {
for(int i=0;i<len1;i++){
if(word1[i]!=word2[i]){
equal = false;
break;
}}}
if(equal){
cout << "YES\n";
} else {
cout << "NO\n";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
29

30. Сравнение

const int SIZE = 100;
char word1[SIZE], word2[SIZE];
cin.getline(word1, SIZE);
cin.getline(word2, SIZE);
if(strcmp(word1, word2)==0){
cout << "YES\n" << endl;
} else {
cout << "NO\n" << endl;
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
30

31. strcpy

const int SIZE = 100;
char hello[SIZE];
hello = “Hello”;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
31

32. strcpy

const int SIZE = 100;
char hello[SIZE], word[SIZE];
strcpy(hello, "Hello");
cout << hello << endl;
strcpy(word, hello);
cout << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
32

33. strcat

const int SIZE = 100;
char hello[SIZE], name[SIZE];
hello = “Hello, ”;
cin >> name;
hello += name;
cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
33

34. strcat

const int SIZE = 100;
char hello[SIZE], name[SIZE];
hello = “Hello, ”;
cin >> name;
strcat(hello, name);
cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
34

35. strchr

const int SIZE = 100;
char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
int start = 0;
while (strchr(word+start,'r')!=0){
char* pos = strchr(word+start,'r');
*pos='w';
start = pos-word;
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
35

36. strstr

const int SIZE = 100;
int count = 0;
char word[SIZE];
char target[]="abc";
cin.getline(word, SIZE);
int start = 0;
while (strstr(word+start,target)!=0){
count ++;
char* pos = strstr(word+start,target);
start = pos-word+1;
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
36

37. tolower/toupper

#include <cstdlib>
using namespace std;
#include “stdlib.h”
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
37

38. tolower/toupper

const int SIZE = 100;
char word[SIZE];
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0; i<len;i++){
word[i] = tolower(word[i]);
}
cout << “After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
38

39. Простой подсчет

• Посчитать, сколько гласных букв (a,e,i,o,u) в
строке
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
39

40. Простой подсчет

const int SIZE = 100;
char word[SIZE];
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='a' || word[i]=='e' || word[i]=='i'
|| word[i]=='o' || word[i]=='u'){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
40

41. Простой подсчет

const int SIZE = 100;
char word[SIZE];
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='a' || word[i]=='e' || word[i]=='i'
|| word[i]=='o' || word[i]=='u'){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
41

42. Простой подсчет

const int SIZE = 100;
char word[SIZE];
char vowels[] = "aeiou";
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(strchr(vowels, tolower(word[i]))){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
42

43. Подсчет слов

const int SIZE = 100;
char text[SIZE];
char dividers[] = " \t\n,;.!?";
int count = 0;
bool inWord = false;
cin.getline(text, SIZE);
int len = strlen(text);
for(int i=0;i<len;i++){
if(strchr(dividers, text[i])){
inWord = false;
} else {
if(!inWord){
inWord = true;
count++;
}
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
43
English     Русский Rules