Klasa string w C++

Klasa std::string w C++ jest częścią Standardowej Biblioteki Szablonów (STL) i zapewnia bogaty zestaw funkcji do łatwej i efektywnej pracy z ciągami znaków. Użycie std::string jest zalecane zamiast korzystania z tablic znaków w stylu C ze względu na większe bezpieczeństwo i wygodę. Poniżej przedstawiam podstawowe informacje oraz przykłady użycia klasy std::string.

Deklaracja i inicjalizacja

#include <string>

std::string str1; // Pusty ciąg znaków
std::string str2 = "Hello, World!"; // Inicjalizacja przy deklaracji
std::string str3("Inicjalizacja konstruktorem");
std::string str4 = str2; // Kopiowanie innego ciągu znaków

Podstawowe metody

  • size() lub length() – zwraca długość ciągu znaków (liczbę znaków).
  • empty() – zwraca true, jeśli ciąg jest pusty.
  • append() lub operator += – dodaje ciąg znaków na końcu istniejącego ciągu.
  • insert() – wstawia ciąg znaków w określone miejsce.
  • erase() – usuwa fragment ciągu znaków.
  • replace() – zastępuje fragment ciągu innym ciągiem znaków.
  • find() – wyszukuje fragment ciągu i zwraca pozycję jego pierwszego wystąpienia.
  • substr() – zwraca podciąg znaków.
  • compare() – porównuje ciągi znaków.
Przykłady użycia
#include <iostream>
#include <string>

int main() {
    std::string str = "Hello";
    str += ", World!"; // Łączenie ciągów
    std::cout << str << std::endl; // Wypisuje "Hello, World!"
    
    if (!str.empty()) { // Sprawdzenie, czy ciąg nie jest pusty
        std::cout << "Ciąg ma długość: " << str.size() << " znaków." << std::endl;
    }
    
    std::string podciag = str.substr(7, 5); // Pobieranie podciągu
    std::cout << "Podciąg: " << podciag << std::endl; // Wypisuje "World"
    
    size_t pozycja = str.find("World"); // Szukanie podciągu
    if (pozycja != std::string::npos) {
        std::cout << "Znaleziono 'World' na pozycji: " << pozycja << std::endl;
    }
    
    str.replace(7, 5, "C++"); // Zastępowanie fragmentu ciągu
    std::cout << "Po zastąpieniu: " << str << std::endl; // Wypisuje "Hello, C++!"
    
    return 0;
}

Podsumowanie

Klasa std::string oferuje wygodne i bezpieczne narzędzia do pracy z tekstem w C++. Dzięki dynamicznemu zarządzaniu pamięcią, funkcje takie jak dodawanie, wycinanie, wstawianie czy wyszukiwanie w ciągach znaków są proste w użyciu i nie wymagają manualnego zarządzania pamięcią, co jest konieczne przy korzystaniu z tablic znaków w stylu C.