Sträng (data)

datatyp bestående av en sekvens av tecken

En sträng inom datalogi är en mängd som består av en ordnad följd av ett bestämt antal element ur ett givet alfabet. Den vanligaste tillämpningen av strängar är teckensträngar, som består av en ordnad följd av numeriska värden som representerar enskilda tecken ur en viss teckenkodning. Teckensträngar representerar ofta text som kan läsas av slutanvändaren i ett användargränssnitt.

Implementationer

redigera

Teckensträngar i programspråket C består av en följd numeriska värden som avslutas med ett nolltecken ('\0' eller hex 0x00). De numeriska värdena är antingen 8-bitarsvärden (datatypen char), 16-bitarsvärden eller 32-bitarsvärden (till exempel datatypen wchar_t i flera Unix-implementationer av ANSI C). Antalet element i strängen ges genom iteration från det första elementet tills ett nollelement påträffas. I följande illustration visas en sträng med fem element och avslutande nollelement. På den övre raden visas vilka tecken i teckenuppsättningen (ASCII) elementen motsvarar, och på den nedre raden visas elementens numeriska (hexadecimala) värden.

K A L L E NUL
0x4B 0x41 0x4C 0x4C 0x45 0x00

Ett annat sätt att definiera hur många element som ingår i strängen är att lagra antalet element på en särskild minnesadress i direkt anslutning till de övriga elementen. I programspråket Pascal används strängar där den första byten innehåller strängens längd följt av strängen själv. Om de enskilda elementen i strängen består av 8 bitar kan man på detta sätt inte representera teckensträngar som är längre än 255 tecken. Datatypen BSTR i programmeringsgränssnittet till Microsoft Windows anger antalet element på ett liknande sätt, men här består elementet som definierar längden alltid av 32 bitar, vilket tillåter strängar med drygt 4 miljarder tecken.[1] Fördelen med att inte ange antalet element med endast ett avslutande nollelement är att strängen med denna metod kan innehålla ett eller flera nollelement. Metoden visas i följande illustration, där det första grå elementet anger antalet element.

- K A L L E
0x05 0x4B 0x41 0x4C 0x4C 0x45

En mer avancerad typ av sträng finns i C++ där strängklassen std::basic_string kan bestå av i princip vilka element som helst, till exempel tecken med eller utan avslutande nolltecken, siffror, instansieringar av andra klasser eller funktionspekare.

Se även

redigera