Chaîne de caractères - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

En informatique, une chaîne de caractères est une suite ordonnée de caractères. La chaîne de caractères est un type de donnée dans de nombreux langages informatiques. En anglais, on emploie le terme (en) string.

Dans les langages de programmations

La plupart des langages de programmation offrent une classe ou un type dédié à la représentation et à la manipulation des chaînes de caractères.

Langage Type de donnée Description
python str, unicode A été modifié avec Python 3.0
java java.lang.String Depuis le début les chaînes Java sont des chaînes unicode
C char* et char[] Le type de donnée chaîne n'a jamais existé en C. Ce type de donné est couramment simulé, par un pointeur sur une séquence de caractère mono-octets se terminant par un octet nul. Des bibliothèques existent pour gérer les chaînes, notamment pour pallier les limites des chaînes mono-octets.
C++ char* et char[], basic_string, string Les templates du C++ définissent la classe std::string (chaînes à base de caractères mono octets). En plus de bibliothèques C fournissant des fonctionnalités sur les chaînes, il existe des bibliothèques C++ concurrente à la représentation standard (std::string).
pascal String Le type de donnée chaîne existe depuis longtemps en Pascal/Delphi. Toutefois depuis l'apparition de Delphi, plusieurs types de chaines de caractères ont été ajoutés : AnsiString, UnicodeString et WideString.

Sucre syntaxique

La représentation d'une chaîne de caractères dépend d'un système à un autre.

Pour représenter une chaîne de caractères dans un flux de caractères (comme un fichier texte, en particulier dans un code source), il est généralement nécessaire de marquer le début et la fin de la chaîne, et éventuellement d'utiliser des séquences d'échappement.

Généralement, pour représenter une chaîne de caractères, on l'entoure par une paire de caractères spéciaux, généralement des guillemets doubles. On notera par exemple "Wikipedia" pour désigner la chaîne de caractères composée par neuf caractères (W, i, k, i, p, e, d, i et a).

Exemples :

  • "Wikipedia"
  • 'Cette phrase est une chaîne de caractères en langage Pascal qui utilise les apostrophes.'
  • (Le langage PostScript manipule aussi des chaînes de caractères avec des parenthèses.)
  • "" (Chaîne vide, de longueur zéro)
  • ' ' (Chaîne contenant un seul caractère - un espace)

Pour pouvoir utiliser ses caractères spéciaux, il existent des conventions. Avec le langage Pascal, on double le guillemet simple pour pouvoir l'introduire dans la chaîne de caractères :

  • 'Il s''agit d''un simple guillemet dans la chaîne de caractères.'

D'autres conventions utilisent un caractère d'échappement ; l'antislash est le caractère le plus utilisé. Pour les langages Java, C, C++ (et d'autres), on note \" pour introduire un guillemet double dans une chaîne de caractères :

  • "Première solution pour contenir le délimiteur \", un caractère d'échappement"
  • "Seconde solution pour contenir le délimiteur\\, le doublage du délimiteur"

Représentation numérique

Différentes techniques existent pour représenter des chaînes à l'aide d'octets. Elle nécessitent généralement de pouvoir représenter chaque caractère (encodage), mais aussi de marquer la fin de la chaîne.

La fin de la chaîne peut être connue à l'aide d'un caractère de fin de chaîne (en général 0, mais $ a également été utilisé sous MS-DOS), ou en stockant simultanément le nombre de caractères ou le nombre d'octets de la chaîne.

Chaque caractère est représenté par un nombre d'octets qui dépend du codages de caractère. En fonction de l'encodage utilisé, des limites pourront exister sur l'ensemble des caractères disponibles, les algorithmes de parcours de caractère, l'interopérabilité et/ou des performances. En particulier les codages à base de caractères mono-octets tels que les ASCII étendu, peuvent être plus performant, mais limitant et/ou contraignants dans un contexte d'internationalisation et/ou d'interopérabilité. Les autres encodages UTF-8 par exemple présentent d'autres caractéristiques.

Représentation en mémoire

Dans une mémoire informatique, l'adresse mémoire du premier caractère est connu. Pour délimiter la fin de la chaîne, soit elle est terminée par un caractère de fin de chaîne (zéro binaire en langage C, et on parle alors d'ASCIIZ pour indiquer « terminé par un zéro »), soit le nombre de caractères est stocké en parallèle (BASIC, Pascal, PL/I). Dans certains langages orientés objet, le codage interne de la chaîne n'a pas besoin d'être connu (encapsulation).

FRANK en mémoire, délimité par un caractère nul
F R A N K k e f w
46 52 41 4E 4B 00 6B 65 66 77
FRANK en mémoire stocké avec la longueur
F R A N K k f f w
05 46 52 41 4E 4B 6B 66 66 77
Page générée en 0.078 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise