Приклад
#include <string>
using namespace std;
int main()
{
string hi(“hello”); // створення й ініціалізація нового рядка
string lo=“greetings”; // ще одна ініціалізація
string g(lo); // третя ініціалізація
string es=””; // порожній рядок
string s; // ініціалізація порожнього рядка
return 0;
}
2.3 Передача рядків в якості параметрів функцій
Рядок в Сі + + - це масив символів, що закінчується нуль-символом - '\ 0' (нуль-термінатором). За положенням нуль-термінатора визначається фактична довжина рядка. Кількість елементів у такому масиві на 1 більше, ніж зображення рядки.
Для роботи з рядками існують спеціальні бібліотечні функції, які містяться в заголовному файлі string.h.
Рядки при передачі в функції можуть передаватися як одномірні масиви типу char або як вказівники типу char *. На відміну від звичайних масивів у функції не вказується довжина рядка, т. к. в кінці рядка є ознака кінця рядка / 0.
/ / Функція пошуку заданого символу в рядку
int find (char * s, char c)
{
for (int I = 0; I <strlen (s); I + +)
if (s [I] == c) return I;
return -1
}
Таблиця 19 – Стандартні функції обробки рядків
прототип функції | Короткий опис | Примітка |
unsigned strlen(const char* s); | Обчислює довжину рядка s. | |
int strcmp(const char* s1, const char* s2); | Порівнює рядки s1 і s2. | Якщо s1 <s2, то результат отріцательний, якщо s1==s2, то результат дорівнює 0, якщо s2> s1 - результат позитивний. |
int strcnmp(const char* s1, const char* s2); | Порівнювати перший n символів рядків s1 і s2. | Якщо s1 <s2, то результат отріцательний, якщо s1==s2, то результат дорівнює 0, якщо s2> s1 - результат позитивний. |
char* strcpy(char* s1, const char* s2); | Копіює символи рядка s1 в рядок s2. | |
char* strncpy(char* s1, const char* s2, int n); | Копіює n символів рядка s1 в рядок s2. | Кінець рядка відкидається або доповнюється пробілами. |
char* strcat(char* s1, const char* s2); | Приписує рядок s2 до рядка s1 | |
char* strncat(char* s1, const char* s2); | Приписують перше n символів рядка s2 до рядка s1 | |
char* strdup(const char* s); | Виділяє пам'ять і переносить в неї копію рядки s | При виділенні пам'яті використовуються функції |
Рядки при передачі в функції можуть передаватися як одномірні масиви типу char або як вказівники типу char *. На відміну від звичайних масивів у функції не вказується довжина рядка, т. к. в кінці рядка є ознака кінця рядка \ 0.
Постановка завдання
Ввести з клавіатури рядок символів і обробити її у відповідності зі своїм варіантом, використовуючи функції.
2. Створити програми обробки рядка