[c++]faire un grep dans un fichier (newbie style..)

faire un grep dans un fichier (newbie style..) [c++] - C++ - Programmation

Marsh Posté le 01-02-2008 à 12:31:57    

Bonjour
 
Ca fait quelques temps que j'ai pas codé, j'ai donc perdu un peu toutes mes bases. Mais la, j'ai besoin d'aller toucher un prgramme et j'ai besoin de votre aide :  
 
J'ai besoin de verifier si un ID appartient à une liste, que j'ecris dans un fichier. Le ficher ressemble à ca :  
[cpp]
1234
4975073
773
993855
...[cpp]
 
donc questions :  
- que dois-je mettre comme #include pour manipuler les fichiers ?
- existe-t-il une fonction qui "grep" un pattern dans un fichier ? ou dois-je la coder moi-meme ?
 
Merci d'avance.
 
++
Nico

Reply

Marsh Posté le 01-02-2008 à 12:31:57   

Reply

Marsh Posté le 01-02-2008 à 13:24:29    

Un bon point de départ pour t'aider : http://cplusplus.com
 
Il te suffit d'ouvrir ton fichier avec un ifstream, d'en lire chaque ligne avec l'opérateur >> dans un stringbuf, et à partir du contenu de ce stringbuf, en extraire une string qui te permet d'utiliser la méthode find().
 
Ça se fait en quelques lignes de code. [:dawa]

Reply

Marsh Posté le 01-02-2008 à 14:29:34    

ifstream m'a mis sur la piste, thx.
 
J'ai donc recupéré ca :  

Code :
  1. #include <string>
  2. #include <fstream>
  3. #include <iostream>
  4. int main()
  5. {
  6.   // le constructeur de ifstream permet d'ouvrir un fichier en lecture
  7.   std::ifstream fichier( "ListID.txt" );
  8.   if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
  9.   {
  10.     std::string ligne; // variable contenant chaque ligne lue
  11.     // cette boucle s'arrête dès qu'une erreur de lecture survient
  12. //    while ( fichier >> ligne ) // s'arrete a chaque espace
  13.     while ( std::getline( fichier, ligne ) )    // passe ligne par ligne
  14.     {
  15.       // afficher la ligne à l'écran
  16.       std::cout << ligne << std::endl;
  17.     }
  18.   }
  19. }


 
Maintenant, je recherche l'equivalent du "^" dans grep, qui me permettrait de recupérer le 1er élément de la ligne (oui oui, je sais, la reponse doit etre deja dans mon code, mais j'avoue que c pas hyper clair pour moi...)
 
Merci d'avance... again...


Message édité par Burps le 01-02-2008 à 14:29:56
Reply

Marsh Posté le 01-02-2008 à 14:36:34    

bah std::string a un operator==. Après y a pas pour le moment de regex en standard.
 
Tu ferais bien:
- soit d'utiliser grep
- de te metter au boulot. Ce que tu as récupérer est bon, maintenant c'est à toi de coder.

Reply

Marsh Posté le 01-02-2008 à 15:04:30    

boost::regex na ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed