C++ : ostringstream 2

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

C++ : manipuler des chaînes avec ostringstream

En C++, les flots d'entrée-sortie (les streams) sont des outils qu'on gagne à maîtriser. Leurs fonctionnalités surprenantes et leur grande extensibilité sont parfois méconnues. En effet, l'apprentissage des flots n'est pas trivial et le non-initié se rabattra trop souvent sur la bibliothèque standard du langage C (printf, scanf, fopen, etc.).

La fonction standard sprintf permet d'écrire du texte formaté dans un tableau. Cependant, son utilisation s'accompagne de fâcheuses limitations, notamment la longueur fixe du tableau et l'impossibilité d'écrire autre chose que des types standards (int, char*, double, etc.). On peut s'affranchir de ces limitations en se servant de la classe ostringstream, définie dans <sstream>. Celle-ci permet de manipuler les chaînes de caractères comme si elles étaient des flots de sortie. Si on prend par exemple le code suivant :

char buffer[100];
sprintf(buffer, "%s = %f", "PI", M_PI);

Avec la classe ostringstream, il devient :

ostringstream oss;
oss << "PI = " << M_PI;

Bien sûr, ostringstream offre beaucoup plus de possibilités. On peut tirer profit des manipulateurs de flots (stream manipulators) comme endl et setw(). On peut aussi y écrire des instances de classes (pour peu que les opérateurs d'insertion << soient définis). Enfin, la longueur de la chaîne est illimitée.

Voyez un peu cet exemple plus éloquent :

ostringstream oss;
oss << setw(10) << scientific << M_PI << endl
    << Sphere();
...
cout << oss.str();    // affichage de la chaîne à l'écran
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager