# Programmation/Manipulation de chaînes

* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
[ Modifier le sommaire ]
Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « »).
Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle engendrant ce cadre)
Une chaîne de caractères est un type de données stockant une séquence de caractères, souvent de longueur limitée. Ce type de données est principalement utilisé pour la lecture ligne par ligne de fichiers ou de la console utilisateur. Différentes opérations permettent la manipulation et la transformation de chaînes de caractères.

## Stockage en mémoire

Selon le langage de programmation utilisé, une chaîne de caractères peut être stockée de diverses manières, déterminant comment obtenir sa longueur.

### Longueur explicite

    Le nombre de caractères est stocké avant la séquence de caractères. Par exemple, en Pascal, la longueur est stockée dans le premier octet de la zone mémoire utilisé. Dans ce langage, une chaîne de caractères peut donc stocker entre 0 et 255 caractères ; toutefois la longueur maximale est davantage restreinte par celle spécifiée dans la déclaration de la variable.

### Marque de fin

    La séquence de caractère commence dès le début de la zone mémoire et un caractère spécial est utilisé pour marquer la fin. En C, le caractère NUL (code 0) marque la fin de la chaîne. Il ne peut donc pas être inclus dans une chaîne de caractères.

### Longueur fixe

    Il s'agit d'une séquence de caractères dont la taille ne varie pas et est spécifiée à la déclaration de la variable. En C, il s'agit d'un tableau de caractères, et son traitement se fait avec d'autres fonctions que celles des chaînes de caractères dont la fin est marquée par NUL. En Ada où le typage est strict, une chaîne déclarée de longueur L ne peut être copiée que dans une chaîne de même type et même longueur.

## Opérations sur les chaînes de caractères
### Obtenir la longueur

    La longueur d'une chaîne permet de déterminer le nombre d'itérations d'une boucle de traitement caractère par caractère, de calculer la quantité de mémoire ou de stockage disque nécessaire...
    En C, la fonction strlen(s) donne la longueur de la chaîne de caractères en cherchant la position du caractère NUL.
    En Java, la méthode s.length donne la longueur de la chaîne de caractères.

### Obtenir un caractère

    L'extraction d'un caractère permet de traiter une chaîne caractère par caractère. Généralement l'index 0 désigne le premier caractère. L'index ne doit pas être en dehors de l'intervalle valide (0 à longueur-1 en général).
    En C, les chaînes sont des tableaux de caractères : s[0] donne le premier caractère (NUL si la chaîne est vide).
    En Java, la méthode s.charAt(i) retourne le caractère à la position spécifiée : s.charAt(0) donne le premier caractère (ArrayOutOfBoundsException si la chaîne est vide).

### Obtenir une sous-chaîne de caractères

    L'extraction d'une partie de la chaîne de caractère donne une autre chaîne de caractère, ce qui permet de traiter une partie (ex : un mot).

### Concaténation

    La concaténation permet de construire une nouvelle chaîne de caractère en assemblant les séquences dans l'ordre en une seule chaîne.

### Conversion de/vers les autres types de données

    La conversion d'un type de données vers une chaîne de caractères permet de produire une représentation lisible pour l'utilisateur à l'écran, dans un fichier ou autre (envoi à une socket pour un protocole texte tel que HTTP...).
    La conversion d'une chaîne vers un autre type de données permet d'extraire des données (ex : un entier) à partir d'un fichier, d'une entrée console de l'utilisateur, ...