Indicer les lignes d'un fichier texte avec C++

Indicer les lignes d'un fichier texte avec C++ - C++ - Programmation

Marsh Posté le 16-07-2008 à 11:42:48    

Bonjour,  
 
Voila j'ai un fichier .txt et j'ai une question:
 
Existe-t'il une commande permettant d'indicer les lignes et de les manipuler.
C'est à dire que je voudrais savoir si on pouvait avoir quelque chose comme ca: ligne[i]  ?  
 
Je sais que cela se fait avec les TStringList, mais je travaille sous Visual C++ et apparement il  ne reconnait pas les TstringList.  
 
Merci beaucoup !!!

Reply

Marsh Posté le 16-07-2008 à 11:42:48   

Reply

Marsh Posté le 16-07-2008 à 12:03:21    

Voir les vector de la STL.

Reply

Marsh Posté le 16-07-2008 à 15:07:40    

Utilise getLine() sur un flux dans une boucle et stocke ça dans un vecteur comme l'a dit olivthill.

Reply

Marsh Posté le 16-07-2008 à 16:39:30    

ah ok en fait je met chaque ligne dans un vecteur si j'ai bien compris? par contre vous pouvez me donner une piste svp parce que je ne sais pas du tout là... merciiiiiii

Reply

Marsh Posté le 16-07-2008 à 17:11:57    

alors c'est bon je suis à peu près au point sur les vecteurs, mais deux questions s'imposent:
 
1) on peut mettre des chaines de caractère dans un vecteur? et comment? vector<string> ?
 
2)comment à partir de getline() je peux réussir à incrémenter le vecteur ? je veux dire, une fois que je suis sur une ligne et que je la copie , comment je passe au rang d'après du vecteur ?
 
merci !

Reply

Marsh Posté le 16-07-2008 à 17:54:40    

vector<string> oui
pour ajouter un element : push_back

Reply

Marsh Posté le 17-07-2008 à 11:15:43    

olivthill a écrit :

Voir les vector de la STL.


 
Bonjour,  
 
Alors j'ai effectué le code suivant : (donc pour injecter les lignes d'un fichier texte dans un vecteur en utilisant getline)  
 

Code :
  1. int main(int argc, char* argv[])
  2. {
  3.             vector<string> vect(50); //je crée mon vecteur
  4. int i;                 
  5. ifstream ifs( "new_toto2.txt" );
  6. ofstream ofs( "vecteur.txt" );
  7. string line;
  8. //-------------------------CREATION DU VECTEUR-------------------------             for(i=0;i<vect.size();++i)
  9. {
  10.  while ( getline( ifs , line ) ) 
  11.  {
  12.   vect[i]=line;
  13.   ofs<<vect[i]<<"\n";
  14.   cout<<<<"test1  "<<vect[i]<<endl;      //affiche les valeurs de vect[i]
  15.  };
  16. cout<<<<"test2  "<<vect[i]<<endl;     //affiche vect[i]
  17. };


 
Mais là problème! Le deuxième affichage ne fonctionne pas, je crois que les valeurs de mon vecteur sont supprimées en sortant de la boucle "while" .
Savez-vous comment faire pour les garder?
 
Merci infiniment !
 

Reply

Marsh Posté le 17-07-2008 à 11:22:44    

je crois que tu fais n'importe quoi ... par definition les classes de la STL marche, le probleme vient de l'utilsiateur :o
 
tu devrais quand même tester si ton fichier est bien ouvert, ne pas dimensionner ton vecteur et utiliser push_back.

Reply

Marsh Posté le 17-07-2008 à 11:57:57    

Possible que je fasse n'importe quoi, mais je ne vois pas pourquoi...
 
dans la boucle le vecteur est très bien défini sans problème, il s'affiche correctement, mais en dehors de cette boucle (test2) il n'y a rien dans mon vecteur...  
le push_back c'est pourquoi ?

Reply

Marsh Posté le 17-07-2008 à 13:38:02    

test ça :

 
Code :
  1. int main(int , char**)
  2. {
  3.   vector<string> vect; //je crée mon vecteur
  4.   ifstream ifs( "new_toto2.txt" );
  5.   ofstream ofs( "vecteur.txt" );
  6.   string line;
  7.   while ( getline( ifs , line ) )
  8.   {
  9.     vect.push_back(line);
  10.     ofs<<line<<"\n";
  11.   }
  12.   for(size_t i=0;i<vect.size(); ++i) cout << vect[i] << "\n";
  13. }


Message édité par Joel F le 17-07-2008 à 13:38:37
Reply

Marsh Posté le 17-07-2008 à 13:38:02   

Reply

Marsh Posté le 17-07-2008 à 15:08:53    

génial !!!  
merci vraiment beaucoup pour votre temps et aide !!  
merciiiiiiiiiiiiiii

Reply

Sujets relatifs:

Leave a Replay

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