3. Масив символів
char s [100];
Ознакою кінця
рядка є нульовий
символ 0
Тип
string s;
Спеціальний тип,
бібліотека STL
2 способи опису рядків:
4. Опис та ініціалізація символів та рядків
char c;
сhar c=‘Q’;
char str1 [10];
char str2 [10] = "Hello";
char str3 [10] = {'H', 'e', 'l', 'l', 'o', ' 0'};
char str5 [] = "Very long line";
char * str6;
a
w e r t y u i o p ⌫
s fd g h j k l ‘ Enter
q
z x c v b n m ., ?
Ctrl &123 < > ⌨
5. Введення-виведення
Рядок можна обробляти як
масив символів,
використовуючи алгоритми
обробки масивів або за
допомогою функцій
обробки.
символи
• getchar()
• scanf(“%c”, &c);
слова
• cin
• scanf(“%s”, s);
рядки
• gets
• getline()
7. Довжина рядка
strlen (ім'я рядка) визначає довжину зазначеного рядка, без урахування
нуль-символу
Копіювання рядків
strcpy (s1, s2) виконує побайтное копіювання символів з рядка s2 в
рядок s1
strncpy (s1, s2, n) виконує побайтне копіювання n символів з рядка s2 в
рядок s1. повертає значення s1
Конкатенація(склеювання) рядків
strcat (s1, s2) об'єднує рядок s2 з рядком s1. Результат зберігається в s1
strncat (s1, s2, n) об'єднує n символів рядка s2 з рядком s1. Результат
зберігається в s1
Порівняння рядків
strcmp (s1, s2) порівнює рядок s1 з рядком s2 і повертає результат типу
int: 0 -якщо рядки еквівалентні,> 0 - якщо s1 <s2, <0 - якщо s1> s2 З
урахуванням регістра
strncmp (s1, s2) порівнює n символів рядка s1 з рядком s2 і повертає
результат типу int: 0 -якщо рядки еквівалентні,> 0 - якщо s1 <s2, <0 -
якщо s1> s2
stricmp (s1, s2) порівнює рядок s1 з рядком s2 і повертає результат типу
int: 0 -якщо рядки еквівалентні,> 0 - якщо s1 <s2, <0 - якщо s1> s2 Без
урахування регістру
8. Код символа
#include<stdio.h>
#include<string.h>
main()
{char c;
scanf("%c", &c);
printf("%d", c);
}
Перший символ
#include <stdio.h>
#include <string.h>
main()
{
char s[256];
int k=0;
scanf("%s", s);
printf("%c", s[0]);
}
Символ в алфавіті
#include<stdio.h>
main()
{char c;
int k;
scanf("%d", &k);
k=k+64;
printf("%c", k);
}
Довжина рядка
#include <stdio.h>
#include
<string.h>
main()
{
char s[255];
int k=0;
scanf("%s", s);
k=strlen(s);
printf("%d", k);
}
Сума індексів голосних
#include<stdio.h>
#include<string.h>
main()
{char s1[1000];
int i, k=0;
scanf("%s", s1);
for(i=0;i<strlen(s1); i++)
if ((s1[i]=='a')||(s1[i]=='o')||(s1[i]=='e')||
(s1[i]=='y')||(s1[i]=='u')||(s1[i]=='i'))k=k+i+1
;
printf("%d",k );
}
Заміна маленьких
літер на великі
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{char s[255];
cin>>s;
for (int
i=0;i<strlen(s);i++)
{s[i]= toupper(s[i]);
cout<<s[i];}}
9. Обробка символів
isalnum (c) повертає значення true,
якщо с є буквою або цифрою, і false в
інших випадках
isalpha (c) true, якщо с є буквоюisdigit (c)
повертає значення true, якщо с є
цифрою
islower (c) true, якщо с є буквою
нижнього регістра
isupper (c) true, якщос є буквою
верхнього регіструisspace (c) true,
якщо є пробілом
toupper (c) якщо символ с є символом
нижнього регістру, то функція
повертає перетворений символ у
верхньому регістрі, інакше символ
повертається без змін.
10. Функції пошуку
strchr (s, c) пошук першого входження
символу з в рядку s. У разі вдалого
пошуку повертає вказівник на місце
першого входження символу с. Якщо
символ не знайдений, то
повертається нуль.
strspn (s1, s2) повертає довжину
початкового сегмента рядка s1, який
містить тільки ті символи, які входять
в рядок s2
strprbk (s1, s2) Повертає покажчик
першого входження будь-якого
символу рядка s2 в рядку s1
11. Функції перетворення
atof (s1) перетворить рядок s1 в тип double
atoi (s1) перетворить рядок s1 в тип int
atol (s1) перетворить рядок s1 в тип long int
14. Операції над рядками
Над рядками типу string визначені операції:
• присвоювання, наприклад s1 = s2;
• об'єднання рядків (s1 + = s2 або s1 = s1 + s2)
- додає до рядка s1 рядок s2, результат
зберігається в рядку s1
• порівняння рядків на основі
лексикографічного порядку: s1 = s2, s1! = s2,
s1 <s2, s1> s2, s1 <= s2, s1> = s2 -
результатом буде логічне значення
15. Функції
s.substr (pos, length) - повертає підрядок з
рядка s, починаючи з номера pos довгою
length символів;
s.empty () - повертає значення true, якщо
рядок s порожній, false - в іншому
випадку;
s.insert (pos, s1) - вставляє рядок s1 у
рядок s, починаючи з позиції pos;
s. erase (pos, length) - видаляє з рядка s
підрядок length довжиною pos символів;
s.find (s1, pos) - повертає номер першого
входження рядка s1 у рядок s, пошук
починається з номера pos, параметр pos
може бути відсутнім, в цьому випадку
пошук іде з початку рядка;
16. Ввести слово
#include<iostream>
#include<string>
using namespace std;
main()
{string s;
cin>>s;
cout<<s;
}
Ввести рядок слів
#include<iostream>
#include<string>
using namespace std;
main()
{string s;
getline(cin,s);
cout<<s;
}
Вставка в кінець рядка
#include<iostream>
#include<string>
using namespace std;
main()
{string s, s1(" Hello"),s2;
getline(cin,s);
s.insert(s.length(), s1);
cout<<s;
}
Довжина рядка
#include<iostream>
#include<string>
using namespace std;
main()
{string s;
getline(cin,s);
cout<<s;
}
Конкатенація (склеювання)
рядків
#include<iostream>
#include<string>
using namespace std;
main()
{string s, s1("Hello"),s2;
getline(cin,s);
s2=s1+", "+s;
cout<<s2;
}
Видалення символів з
1 по 3
#include<iostream>
#include<string>
using namespace std;
main()
{string s, s1(" Hello"),s2;
getline(cin,s);
s.erase (1, 3);
cout<<s;
}