Podstawowe funkcje do operacji na łańcuchach znaków w C++

W tej lekcji poznamy podstawowe funkcje do operacji na łańcuchach znaków w C++. Łańcuchy znaków, czyli ciągi tekstowe, są często używane w programowaniu do przechowywania i manipulacji danymi tekstowymi, takimi jak imiona, adresy, komunikaty itp. W C++ można pracować z tekstem za pomocą klasy std::string, która oferuje wiele przydatnych funkcji, takich jak łączenie, znajdowanie, porównywanie czy modyfikowanie ciągów znaków.

Przykład kodu – Operacje na łańcuchach znaków

Stwórz plik o nazwie string_operations.cpp i wklej do niego poniższy kod:

// Importujemy bibliotekę iostream do operacji wejścia/wyjścia
#include <iostream>
// Importujemy bibliotekę string, aby móc korzystać z klasy std::string
#include <string>

// Główna funkcja programu
int main() {
    // --- Deklaracja i inicjalizacja łańcuchów znaków ---

    // Tworzymy zmienną typu string o nazwie 'greeting' i przypisujemy jej wartość "Cześć"
    std::string greeting = "Cześć";
    
    // Tworzymy kolejny łańcuch znaków o nazwie 'name' i przypisujemy mu wartość "Jan"
    std::string name = "Jan";

    // --- Łączenie (konkatenacja) łańcuchów znaków ---
    
    // Łączymy zmienne 'greeting' i 'name' w nową zmienną 'message'
    std::string message = greeting + ", " + name + "!";
    std::cout << "Wiadomość: " << message << std::endl;

    // --- Pobieranie długości łańcucha ---
    
    // Używamy metody length(), aby uzyskać długość łańcucha 'message'
    std::cout << "Długość wiadomości: " << message.length() << " znaków" << std::endl;

    // --- Dostęp do poszczególnych znaków ---
    
    // Wyświetlamy pierwszy znak łańcucha 'name' za pomocą operatora indeksowania []
    std::cout << "Pierwsza litera imienia: " << name[0] << std::endl;

    // Modyfikujemy pierwszy znak łańcucha 'name'
    name[0] = 'K';
    std::cout << "Zmienione imię: " << name << std::endl;

    // --- Znajdowanie podłańcucha w łańcuchu ---
    
    // Używamy metody find() do znalezienia pozycji podłańcucha "Cześć" w łańcuchu 'message'
    size_t found = message.find("Cześć");
    if (found != std::string::npos) {
        std::cout << "Znaleziono 'Cześć' na pozycji: " << found << std::endl;
    }

    // --- Wydzielanie fragmentu łańcucha ---
    
    // Używamy metody substr() do wydzielenia części łańcucha 'message' od pozycji 7 i długości 3 znaki
    std::string substring = message.substr(7, 3);
    std::cout << "Fragment łańcucha: " << substring << std::endl;

    // --- Porównywanie łańcuchów ---
    
    // Używamy operatora == do porównania dwóch łańcuchów
    if (name == "Kan") {
        std::cout << "Imię to 'Kan'" << std::endl;
    } else {
        std::cout << "Imię nie jest 'Kan'" << std::endl;
    }

    // --- Zakończenie programu ---
    return 0;
}

Jak działa program

Ten program demonstruje podstawowe operacje na łańcuchach znaków w C++. Na początku definiuje dwie zmienne typu std::string (greeting i name). Następnie łączy te łańcuchy za pomocą operatora + i wyświetla wynik. Program korzysta z różnych metod klasy std::string, takich jak length() do uzyskania długości łańcucha, find() do znalezienia podłańcucha, substr() do wydzielania fragmentu tekstu oraz operatorów indeksowania ([]) do dostępu i modyfikacji poszczególnych znaków. Na koniec pokazuje, jak porównać dwa łańcuchy przy użyciu operatora ==.

Opis działań w kodzie

  1. Deklaracja i inicjalizacja łańcuchów znaków:
    • std::string greeting = "Cześć"; – Tworzy zmienną typu std::string o nazwie greeting i przypisuje jej wartość "Cześć".
    • std::string name = "Jan"; – Tworzy zmienną typu std::string o nazwie name i przypisuje jej wartość "Jan".
  2. Łączenie (konkatenacja) łańcuchów znaków:
    • std::string message = greeting + ", " + name + "!"; – Łączy trzy łańcuchy znaków, tworząc nową zmienną message.
    • std::cout << "Wiadomość: " << message << std::endl; – Wyświetla łańcuch message.
  3. Pobieranie długości łańcucha:
    • message.length() – Zwraca liczbę znaków w łańcuchu message.
    • std::cout << "Długość wiadomości: " << message.length() << " znaków" << std::endl; – Wyświetla długość łańcucha.
  4. Dostęp do poszczególnych znaków:
    • name[0] – Uzyskuje dostęp do pierwszego znaku w łańcuchu name.
    • name[0] = 'K'; – Modyfikuje pierwszy znak łańcucha name.
  5. Znajdowanie podłańcucha w łańcuchu:
    • message.find("Cześć") – Szuka podłańcucha "Cześć" w łańcuchu message. Zwraca pozycję, jeśli znajdzie podłańcuch, lub std::string::npos, jeśli nie znajdzie.
    • if (found != std::string::npos) {...} – Sprawdza, czy podłańcuch został znaleziony, i wyświetla jego pozycję.
  6. Wydzielanie fragmentu łańcucha:
    • message.substr(7, 3) – Wydziela z łańcucha message podłańcuch zaczynający się od pozycji 7 i o długości 3 znaki.
    • std::cout << "Fragment łańcucha: " << substring << std::endl; – Wyświetla wydzielony fragment łańcucha.
  7. Porównywanie łańcuchów:
    • if (name == "Kan") {...} – Porównuje łańcuch name z wartością "Kan". Wypisuje odpowiedni komunikat w zależności od wyniku porównania.

Program demonstruje, jak łatwo można manipulować tekstem w C++ przy użyciu klasy std::string. To jedne z najczęściej używanych operacji podczas pracy z danymi tekstowymi w aplikacjach.

 

Scroll to Top