mercredi 13 janvier 2010

Les stringstream en C++

Vous vous galérez encore à manipuler les char* ? et ça vous énerve de faire les transformations string <-> char* ?

Ok, si vous connaissez un peu de syntaxe C++, ces bouts de code devraient bien vous intéresser.

Vous allez voir, c'est magique dès qu'on a les fonctions clés.

Pour le principe, les stringstream sont des flux du même genre que cout, cin et cerr. Mais vous pouvez les manipuler comme des chaines de caractères ... !!!

Vous avez besoin d'ouvrir un nouveau fichier main.cc et d'y mettre :

#include   //Pour faire des cout

#include     //Pour jouer dans un fichier

#include    //Pour utiliser les stringstream

#include    //Pour utiliser aussi des strings


using namespace std;


//Ok nous voilà parés


int main(){

//J'ai une variable quelconque

int a = 2;

//Je veux un stringstream
stringstream ss;


//je veux un fichier (non vide c mieux ^^)
fstream f("votre_fichier",fstream::in);  //Notez le fstream::in, qui permet d'ouvrir en lecture)

//Je vais lire mon fichier jusqu'au bout, en récupérant chaque 'mot'
// les 'mots' sont séparés par des espaces

//Je prend une chaine de caractères
string c;

while(f.good())
{
  f >> c;
}

//dans c , vous avez le dernier mot lu.
//vous pouvez par exemple prévenir que :

ss << "Dernier mot lu : " << c << endl;

cout << ss.str();

//On a mis le message dans le stringstream et on affiche le contenu du //stream dans cout ensuite.


//On récupère la string correspondant au stream avec :
  string contenu= ss.str();

//et on peut avoir ça en char*, pour les string et les streams avec :

char* contenu = new char[100];
contenu = c.c_str();

//Ou

contenu = ss.str().c_str();


//C'est pratique aussi pour passer des commandes système
//vous ajoutez :
#include //Pour appeler la commande system

//Et vous faite votre commande avec le stream

ss << "cp " << monfichier.str() << "_version" << numversion;

//Par exemple :D
//Puis

system(ss.str().c_str());

//Enfin, le dernier truc magique indispensable,
//Pour remettre à zéro un stream qui contient déjà quelque chose
ss.str("");

//Simplissime ? ... ouais c sur, mais faut juste le savoir :), c ça qu'est bon

};




Voilà un premier exemple sur les stringstream, testez ça, c'est magique.
Depuis que j'ai commencé, je ne peux plus arrêter ^^... je suis accro


À vous d'jouer.

Aucun commentaire:

Enregistrer un commentaire