Napisy w stylu C: Tablice typu char i znak null
Zrozumienie niskopoziomowej obsługi tekstu: jak działają tablice znakowe zakończone bajtem zerowym.
Czym są C-Style Strings?
W języku C oraz w niskopoziomowym C++, napis nie jest dedykowanym obiektem, lecz tablicą znaków typu char, która kończy się specjalnym znakiem o wartości zero: \0 (tzw. null terminator).
Deklaracja i inicjalizacja
Kiedy piszesz napis w cudzysłowie, kompilator automatycznie dodaje \0 na końcu:
char napis[] = "Hej";
// W pamięci: ['H', 'e', 'j', '\0']
// Rozmiar tablicy to 4 bajty, mimo że tekst ma 3 litery.Dlaczego znak \0 jest ważny?
Funkcje operujące na takich napisach (np. te z biblioteki <cstring>) nie wiedzą, jak długa jest tablica. Przeszukują ją znak po znaku, aż natrafią na bajt o wartości 0. Jeśli go zabraknie, program będzie czytał pamięć dalej, co prowadzi do błędów typu Undefined Behavior.
Podstawowe funkcje z biblioteki <cstring>
Aby manipulować takimi napisami, używamy funkcji:
strlen(str): Zwraca długość napisu (bez znaku zero).strcpy(dest, src): Kopiuje napis (niebezpieczne, może przepełnić bufor!).strcmp(s1, s2): Porównuje dwa napisy (zwraca 0, jeśli są identyczne).
std::string vs C-style
W nowoczesnym C++ prawie zawsze używamy klasy std::string. Jednak napisy w stylu C są wciąż obecne w:
- Interfejsach systemowych (np. WinAPI, Linux syscalls).
- Wywołaniach funkcji
main(int argc, char* argv[]). - Optymalizacji pod systemy wbudowane (embedded).
Ważne: Jeśli masz
std::stringi potrzebujesz wersji w stylu C (np. do starej biblioteki), użyj metody.c_str().
Może Cię zainteresować
Podstawowe Algorytmy w C++: Sortowanie, Wyszukiwanie i Generowanie
Poznaj potęgę biblioteki <algorithm>. Przewodnik po funkcjach std::sort, std::find, std::copy oraz generowaniu ciągów danych.
Biblioteka <cmath> w C++ – Niezbędnik Matematyczny
Przegląd najważniejszych funkcji matematycznych w C++: od potęgowania po zaawansowaną trygonometrię.
Zrozumieć Dyrektywę #include w C++
Przewodnik po dyrektywie #include: dowiedz się, jak preprocesor łączy pliki i dlaczego wybór nawiasów ma znaczenie.