0Pricing
C++ Academy · Lekcja

Operacje na ciągach: concat, substr, find, replace

Proszę łączyć, wycinać, wyszukiwać i zastępować zawartość ciągów za pomocą API std::string.

Operacje na ciągach: concat, substr, find, replace to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.

Konkatenacja za pomocą +

Operator + łączy dwa napisy w nowy. Operator += dołącza tekst w miejscu.

std::string a = "Hello, ";
std::string b = "World";
std::string c = a + b;     // "Hello, World"
a += b;                    // a is now "Hello, World"

Wydajne dołączanie tekstu

Wielokrotne użycie + w przypadku długich napisów tworzy wiele obiektów tymczasowych. W intensywnie wykonywanych pętlach należy używać += lub append().

std::string result;
for (auto& word : words) {
    result += word;
    result += ' ';
}

Podciąg za pomocą substr

substr(pos, len) zwraca nowy ciąg znaków rozpoczynający się od pozycji pos. Wartość len domyślnie oznacza resztę ciągu.

std::string s = "Hello, World";
std::cout << s.substr(0, 5);   // "Hello"
std::cout << s.substr(7);      // "World"

Wyszukiwanie podciągów: find

find(needle) zwraca indeks pierwszego dopasowania albo std::string::npos, jeśli go nie znaleziono.

std::string s = "the quick brown fox";
auto pos = s.find("quick");
if (pos != std::string::npos)
    std::cout << "Found at " << pos;

Wyszukiwanie od określonej pozycji

Przekaż drugi argument, aby rozpocząć wyszukiwanie od określonego indeksu — jest to przydatne podczas znajdowania wszystkich wystąpień.

std::string s = "abc abc abc";
size_t pos = 0;
while ((pos = s.find("abc", pos)) != std::string::npos) {
    std::cout << pos << ' ';
    pos += 3;
}

rfind: wyszukiwanie od końca

rfind znajduje ostatnie wystąpienie. find_first_of i find_last_of wyszukują dowolny znak z określonego zbioru.

Zastępowanie w miejscu

replace(pos, len, str) zastępuje len znaków od pozycji pos ciągiem str — nowy ciąg może mieć inną długość.

std::string s = "Hello, World";
s.replace(7, 5, "C++");
std::cout << s;  // "Hello, C++"

Usuwanie znaków

erase(pos, len) usuwa podciąg. Wywołanie erase() bez argumentów usuwa całą zawartość ciągu.

std::string s = "Hello, World";
s.erase(5, 2);          // removes ", "
std::cout << s;         // "HelloWorld"

Wstawianie znaków

insert(pos, str) wstawia str na pozycji pos, przesuwając wszystkie pozostałe znaki w prawo.

std::string s = "HelloWorld";
s.insert(5, ", ");
std::cout << s;  // "Hello, World"

Porównywanie ciągów

Użyj standardowych operatorów porównania albo compare(). Porównanie jest leksykograficzne.

std::string a = "apple", b = "banana";
if (a < b) std::cout << "apple comes first";

Zastępowanie wszystkich wystąpień

Biblioteka standardowa nie udostępnia pojedynczego wywołania zastępującego wszystkie wystąpienia. Napisz prostą funkcję pomocniczą albo użyj std::regex.

void replaceAll(std::string& s, const std::string& from, const std::string& to) {
    size_t pos = 0;
    while ((pos = s.find(from, pos)) != std::string::npos) {
        s.replace(pos, from.size(), to);
        pos += to.size();
    }
}

Szybkie sprawdzenie

Co zwraca "hello".find("xyz"), gdy podciąg nie występuje?

Podsumowanie

std::string udostępnia bogate API: + i += do łączenia, substr do wycinania, find do wyszukiwania oraz replace, erase i insert do modyfikowania. Po użyciu find porównuj wynik z std::string::npos.

Często zadawane pytania

Czy lekcja „Operacje na ciągach: concat, substr, find, replace” jest bezpłatna?

Tak — pełny tekst „Operacje na ciągach: concat, substr, find, replace” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Operacje na ciągach: concat, substr, find, replace”?

Proszę łączyć, wycinać, wyszukiwać i zastępować zawartość ciągów za pomocą API std::string. Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C++ Academy?

Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Operacje na ciągach: concat, substr, find, replace”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?

Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. std::string a tablice znaków w stylu C
  2. Operacje na ciągach: concat, substr, find, replace
  3. Strumień napisów stringstream do parsowania
  4. Konwersja ciągów: to_string i stoi
← Powrót do C++ Academy