CHAÎNES DE CARACTÈRES

Salut ce forum apprends les bases du c++

Moderator: Rick

Post Reply
Hydraxx
Site Admin
Posts: 114
Joined: Mon Jan 12, 2026 4:04 pm
Location: France
Contact:

CHAÎNES DE CARACTÈRES

Post by Hydraxx »

CHAÎNES DE CARACTÈRES

À QUOI ÇA SERT ?

Les chaînes servent à représenter du texte.

Mais en C++, il existe plusieurs modèles :
  • chaînes C ;
  • std::string ;
  • std::wstring ;
  • UTF-8/UTF-16/UTF-32.

1. CHAÎNE C

Code: Select all

const char* text = "Hello";
En mémoire :

Code: Select all

'H' 'e' 'l' 'l' 'o' '\0'
Le caractère '\0' marque la fin.

C’est essentiel.

Sans terminateur nul, les fonctions C ne savent pas où la chaîne se termine.


2. strlen

Code: Select all

strlen("Hello")
renvoie 5.

Le '\0' final n’est pas compté dans la longueur logique.

Mais pour le stockage, il faut 6 octets.


3. RISQUE DES BUFFERS C

Code: Select all

char buffer[8];
Si tu copies une chaîne de 100 caractères dedans sans vérifier, tu écris hors du tableau.

C’est le classique buffer overflow.


4. std::string

Code: Select all

std::string text{"Hello"};
La classe gère :
  • allocation ;
  • taille ;
  • capacité ;
  • copies ;
  • destruction.
Exemple :

Code: Select all

text += " World";

5. size()

Code: Select all

text.size()
donne le nombre d’éléments char stockés dans la chaîne, pas nécessairement le nombre de caractères Unicode perçus par l’utilisateur.

Très important avec UTF-8.


6. c_str()

Code: Select all

const char* ptr = text.c_str();
Pourquoi ?

Pour appeler une API C qui attend :

Code: Select all

const char*

7. INVALIDATION

Code: Select all

const char* ptr = text.c_str();

text += " beaucoup de texte";
Si string réalloue sa mémoire, ptr peut ne plus pointer vers la bonne zone.

Donc ne garde pas aveuglément un pointeur interne après modification du conteneur.


8. WINDOWS ET UTF-16


Les API Win32 Unicode utilisent souvent wchar_t.

Code: Select all

CreateFileW(
    L"C:\\test.txt",
    ...
);
Le suffixe W signifie version wide/Unicode.

Tu rencontreras :
  • LPCWSTR ;
  • LPWSTR ;
  • WCHAR ;
  • std::wstring.

9. UTF-8


Une chaîne UTF-8 utilise des unités char/char8_t selon l’API.

Un caractère Unicode peut nécessiter plusieurs octets.

Donc :

nombre d’octets != forcément nombre de caractères visibles.


À RETENIR


Chaîne C :
pointeur + octets + '\0'.

std::string :
objet qui gère sa mémoire.

Sous Windows :
UTF-16 et wchar_t sont extrêmement importants.

Return to “Bases du C++”

Who is online

Users browsing this forum: No registered users and 1 guest