Chaîne de caractères
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 (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).) 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 (Dans les technologies de l'information, une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction, d'un événement, etc.) Description
python str, unicode (Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout caractère de n’importe quel système d’écriture un nom et...) 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 (Le mot chaîne peut avoir plusieurs significations :) 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 (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...) dépend d'un système à un autre.

Pour représenter une chaîne de caractères dans un flux (Le mot flux (du latin fluxus, écoulement) désigne en général un ensemble d'éléments (informations / données, énergie, matière, ...) évoluant dans un sens commun. Plus précisément le terme est employé dans les domaines...) de caractères (comme un fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par...) 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 (On dit qu'un ensemble E est une paire lorsqu'il est formé de deux éléments distincts a et b, et il s'écrit alors :) 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 (Le vide est ordinairement défini comme l'absence de matière dans une zone spatiale.), de longueur (La longueur d’un objet est la distance entre ses deux extrémités les plus éloignées. Lorsque l’objet est filiforme ou en forme de lacet, sa longueur est...) 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 ( Seconde est le féminin de l'adjectif second, qui vient immédiatement après le premier ou qui s'ajoute à quelque chose de nature identique. La seconde est une unité de mesure du temps. La...) solution pour contenir le délimiteur\\, le doublage (Le doublage est une technique consistant à substituer aux voix des comédiens d'une œuvre audiovisuelle (film, feuilleton...), les voix de comédiens s'exprimant dans une autre langue, cela afin de diffuser cette œuvre dans...) 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 (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) 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 (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut être comprise comme un tout »,...) des caractères disponibles, les algorithmes de parcours de caractère, l'interopérabilité (L'interopérabilité est la capacité que possède un produit ou un système dont les interfaces sont intégralement connues à fonctionner avec d'autres produits...) 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 (Le contexte d'un évènement inclut les circonstances et conditions qui l'entourent; le contexte d'un mot, d'une phrase ou d'un texte inclut les mots qui l'entourent. Le concept de 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 (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.)

Dans une mémoire informatique (Depuis les débuts de l'électricité les phénomènes électriques étant généralement très rapides à l'échelle humaine, les ingénieurs ont cherché à conserver certaines...), l'adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de s'adresser à une autre parmi un ensemble d'entités. Pour...) 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 (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise, et qui peut être désigné par une étiquette verbale. Il est défini par les...), le codage (De façon générale un codage permet de passer d'une représentation des données vers une autre.) interne (En France, ce nom désigne un médecin, un pharmacien ou un chirurgien-dentiste, à la fois en activité et en formation à l'hôpital ou en cabinet...) de la chaîne n'a pas besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories : les besoins primaires, les besoins secondaires et les...) 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.227 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique