string надає зручний спосіб роботи з рядками в C++.
Клас string є частиною стандартної бібліотеки C++ та надає розширені можливості для роботи з рядками порівняно з масивами char.
#include <iostream> #include <string> // необхідний заголовок using namespace std; int main() { // Різні способи створення рядків string str1; // порожній рядок string str2 = "Привіт"; // ініціалізація string str3("Світ"); // конструктор string str4(5, 'A'); // "AAAAA" string str5 = str2 + " " + str3; // конкатенація cout << "str1: '" << str1 << "'" << endl; cout << "str2: " << str2 << endl; cout << "str4: " << str4 << endl; cout << "str5: " << str5 << endl; return 0; }
#include <iostream> #include <string> int main() { string name, city; cout << "Введіть ваше ім'я: "; cin >> name; // зчитує до першого пробілу cout << "Введіть місто: "; cin.ignore(); // ігноруємо попередній символ нового рядка getline(cin, city); // зчитує весь рядок cout << "Ім'я: " << name << endl; cout << "Місто: " << city << endl; // Зчитування з пробілами string fullName; cout << "Введіть повне ім'я: "; cin.ignore(); getline(cin, fullName); cout << "Повне ім'я: " << fullName << endl; return 0; }
#include <iostream> #include <string> int main() { string str1 = "apple"; string str2 = "banana"; string str3 = "Apple"; // Порівняння cout << boolalpha; // вивід true/false замість 1/0 cout << "str1 == str2: " << (str1 == str2) << endl; cout << "str1 != str2: " << (str1 != str2) << endl; cout << "str1 < str2: " << (str1 < str2) << endl; cout << "str1 == str3: " << (str1 == str3) << endl; // Порівняння з урахуванням регістру string lowerStr1 = str1; string lowerStr3 = str3; // Тут можна використати transform для приведення до нижнього регістру return 0; }
| Метод | Опис | Приклад |
|---|---|---|
| length(), size() | Повертає довжину рядка | str.length() |
| empty() | Перевіряє, чи рядок порожній | str.empty() |
| clear() | Очищає рядок | str.clear() |
| append() | Додає рядок в кінець | str.append("text") |
| find() | Пошук підрядка | str.find("abc") |
| substr() | Повертає підрядок | str.substr(2, 5) |
| replace() | Замінює частину рядка | str.replace(0, 3, "new") |
| insert() | Вставляє рядок | str.insert(3, "ins") |
| erase() | Видаляє частину рядка | str.erase(2, 4) |
#include <iostream> #include <string> int main() { string text = "Програмування на C++ - це цікаво!"; // Основні методи cout << "Довжина: " << text.length() << endl; cout << "Порожній?: " << text.empty() << endl; // Пошук size_t pos = text.find("C++"); if (pos != string::npos) { cout << "'C++' знайдено на позиції: " << pos << endl; } // Підрядок string substring = text.substr(0, 12); cout << "Підрядок: " << substring << endl; // Заміна text.replace(text.find("цікаво"), 6, "захопливо"); cout << "Після заміни: " << text << endl; // Додавання text.append(" Дізнайтесь більше!"); cout << "Після додавання: " << text << endl; return 0; }
#include <iostream> #include <string> #include <locale> #include <algorithm> int main() { // Встановлення української локалі setlocale(LC_ALL, "uk_UA.UTF-8"); string ukrainianText = "Українська мова має багато специфічних літер: ґ, є, і, ї"; cout << "Текст: " << ukrainianText << endl; cout << "Довжина рядка: " << ukrainianText.length() << " символів" << endl; cout << "Розмір у байтах: " << ukrainianText.size() << endl; // Пошук українських літер string specificLetters = "ґєії"; for (char c : specificLetters) { size_t found = ukrainianText.find(c); if (found != string::npos) { cout << "Літера '" << c << "' знайдена на позиції " << found << endl; } } // Підрахунок кількості слів int wordCount = 0; bool inWord = false; for (char c : ukrainianText) { if (c == ' ' || c == ',' || c == ':' || c == '.') { if (inWord) { wordCount++; inWord = false; } } else { inWord = true; } } if (inWord) wordCount++; // останнє слово cout << "Кількість слів: " << wordCount << endl; return 0; }
#include <iostream> #include <string> int main() { string text = "Hello World"; // Способи ітерації по рядку cout << "1. Звичайний for:" << endl; for (int i = 0; i < text.length(); i++) { cout << "'" << text[i] << "' "; } cout << endl; cout << "2. Range-based for:" << endl; for (char c : text) { cout << "'" << c << "' "; } cout << endl; cout << "3. З використанням ітераторів:" << endl; for (string::iterator it = text.begin(); it != text.end(); it++) { cout << "'" << *it << "' "; } cout << endl; // Модифікація рядка через ітератори for (string::iterator it = text.begin(); it != text.end(); it++) { *it = toupper(*it); // перетворення у верхній регістр } cout << "У верхньому регістрі: " << text << endl; return 0; }
#include <iostream> #include <string> #include <sstream> int main() { // Розбір рядка на складові string data = "Іван 25 85.5 Студент"; stringstream ss(data); string name; int age; double score; string status; ss >> name >> age >> score >> status; cout << "Ім'я: " << name << endl; cout << "Вік: " << age << endl; cout << "Бал: " << score << endl; cout << "Статус: " << status << endl; // Формування рядка stringstream output; output << "Ім'я: " << name << ", Вік: " << age << ", Бал: " << score; cout << "Сформований рядок: " << output.str() << endl; // Конвертація числа в рядок int number = 12345; stringstream converter; converter << number; string numberStr = converter.str(); cout << "Число як рядок: '" << numberStr << "'" << endl; return 0; }
Написати функцію, яка приймає рядок і повертає його у зворотному порядку.
Створити програму, яка підраховує кількість голосних літер у українському тексті.
Написати функцію, яка форматує текст: першу літеру кожного речення робить великою.
Реалізувати програму, яка знаходить найдовше слово у введеному тексті.
getline() для зчитування рядків з пробіламиstringstreamfind() повертає string::npos, якщо підрядок не знайдено