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
- std::string a tablice znaków w stylu C
- Operacje na ciągach: concat, substr, find, replace
- Strumień napisów stringstream do parsowania
- Konwersja ciągów: to_string i stoi