📑 Table of Contents

Tekstowy typ danych (ang. string) – typ danych służący do przechowywania ciągu znaków (zmiennych łańcuchowych).

Angielski termin string tłumaczy się zwykle jako „ciąg znaków”, ale używa się także określeń „łańcuch znaków”, „łańcuch”, „typ napisowy”, „napis”[1][2].

Realizacja

edytuj

W niektórych językach programowania jak np. Pascal czy PHP łańcuchy są typem wbudowanym; w pozostałych jak C, C++, Java realizuje się je za pomocą innych struktur języka.

W tradycyjnych realizacjach Pascala (np. Turbo Pascal) zmienna typu String może przechowywać do 255 znaków, a w definicji String[długość] może przechowywać do długość znaków, a ma rozmiar długość+1 i jest zaimplementowana jako tablica, której element o indeksie 0 przechowuje liczbę znaków w tym ciągu (typu bajt więc maksymalna długość łańcucha wynosi 255). W późniejszych implementacjach tego języka (np. Object Pascal w Delphi) dodano inną formę reprezentacji łańcucha, w którym maksymalna długość wynosi 2^32 bajtów i jest dynamicznie przydzielana w zależności od długości napisu, typ ten jest rozszerzeniem sposobu implementacji używanego przez C, dodano również typ w stylu C (PChar).

W języku C łańcuchy reprezentuje się jako tablice znaków, a operacje na nich wykonuje z użyciem wskaźników. Rozmiar takiej tablicy może być dowolny, nie jest oddzielnie przechowywany, a programista musi zadbać o to, by napis nie przekroczył rozmiaru bufora (przepełnienie bufora), a także, by pamięć po buforze była zwolniona. Napis nie musi wypełniać całej tablicy, ponieważ znacznikiem końca napisu jest znak o kodzie zero ('\0'). Taką reprezentację nazywa się z ang. null terminated string.

W C++ oprócz tradycyjnych tablic znaków w stylu C, istnieje w bibliotece standardowej klasa std::string. Ukrywa ona niewygodne aspekty używania napisów w stylu C: zarządzanie pamięcią, określanie długości, łączenie napisów, wstawianie, usuwanie i inne manipulacje na napisie. Dodatkowo pozbyto się problemu znaku kończącego – znak o kodzie 0 może być elementem napisu std::string (długość przechowywana jest oddzielnie). Ponieważ biblioteka standardowa (bazująca w tym zakresie na STL) została dość późno dołączona do oficjalnego standardu, wiele kompilatorów dostarcza własne implementacje typów napisowych – np. String, AnsiString, CString. Również niektóre starsze biblioteki (jak np. Qt) dostarczają własnych typów obsługi napisów.

Przerwania systemu MS-DOS wykorzystują wariant ASCIIZ polegający na zamianie terminatora 00h na $ (symbol dolara). Przy wywoływaniu funkcji 13h przerwania 10h kart graficznych, od EGA wzwyż w architekturze IBM PC i pochodnych, służącej do wyświetlania łańcucha na ekranie, podaje się wskaźnik na początek łańcucha i jego długość.

Zarówno w C, C++, Pascalu, jak i w WinAPI spotkać się można z wariantami łańcuchów ANSI oraz Wide, które są wersją stosującą Unicode, a dokładniej kodowanie UTF-16 (na każdy znak przeznaczone są 2 bajty).

W C# typ napisowy to w rzeczywistości klasa[3]. Podobnie jak pozostałe klasy, jest to typ referencyjny, co oznacza, że zmienna nie przechowuje samego napisu, a adres w pamięci, pod którym znajduje się ciąg znaków. Ponadto jest to typ niemutowalny, co oznacza, że każda zmiana napisu np. dodanie znaków na końcu, powoduje utworzenie nowego napisu w innej lokalizacji w pamięci i zapisaniu nowego adresu do zmiennej[4].

Zobacz też

edytuj

Przypisy

edytuj
  1. Lekcja 6 - Zmienne - Typ znakowy i typ napisowy - typy napisowe w C++ [online], www.drzewniak.slupsk.pl [dostęp 2026-06-04].
  2. string w języku C#. Łańcuch znaków jako typ danych [online], Jason, 20 marca 2022 [dostęp 2026-06-04].
  3. C# Strings [online], www.w3schools.com [dostęp 2026-06-04] (ang.).
  4. Understanding String Immutability in C# [online], www.pluralsight.com [dostęp 2026-06-04] (ang.).

📚 Artikel Terkait di Wikipedia

Pascal (język programowania)

podręcznikiem języka Pascal była pozycja Jensen, Wirth, Pascal, User Manual and Report 1974. W 1977 Wirth zarzucił pracę nad Pascalem na rzecz języka Modula

Object Pascal

Object Pascal – język programowania, będący obiektowym rozszerzeniem języka Pascal. Pomiędzy językami Pascal i Object Pascal występuje podobna relacja

Turbo Pascal

Turbo Pascal – jedna z popularniejszych implementacji kompilatorów języka Pascal, zintegrowane środowisko programistyczne, produkt firmy Borland International

C Sharp

Javie, kod programu jest zbiorem klas. W C#, podobnie jak w Javie/Object Pascalu, hierarchia dziedziczenia opiera się na istnieniu jednej klasy Object (System

Pole znacznikowe

języku Pascal - pole jawne wies typu Boolean: type adres=record kod : string[6]; poczta : ''string''[30]; case wies : Boolean of True : (nazwa : string[25];

Typ danych

Pascalu np. char) – typ reprezentujący pojedynczy znak (ASCII lub w nowszych implementacjach Unicode). typ tekstowy (w Javie String, w C++, Pascalu np

Literał

funkcja obiekt Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne

Python

bezpośrednio) – np. Pascalu, C, czy Perlu – bloki kodu zaznaczane są klamrami lub słowami kluczowymi (C i Perl używają { }, Pascal używa begin i end).