Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1498 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1760181
titof31
Posté le 16-07-2008 à 11:42:48  profilanswer
 

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 !!!

mood
Publicité
Posté le 16-07-2008 à 11:42:48  profilanswer
 

n°1760194
olivthill
Posté le 16-07-2008 à 12:03:21  profilanswer
 

Voir les vector de la STL.

n°1760330
ekra
Posté le 16-07-2008 à 15:07:40  profilanswer
 

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

n°1760411
titof31
Posté le 16-07-2008 à 16:39:30  profilanswer
 

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

n°1760438
titof31
Posté le 16-07-2008 à 17:11:57  profilanswer
 

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 !

n°1760452
Joel F
Real men use unique_ptr
Posté le 16-07-2008 à 17:54:40  profilanswer
 

vector<string> oui
pour ajouter un element : push_back

n°1760727
titof31
Posté le 17-07-2008 à 11:15:43  profilanswer
 

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 !
 

n°1760731
Joel F
Real men use unique_ptr
Posté le 17-07-2008 à 11:22:44  profilanswer
 

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.

n°1760767
titof31
Posté le 17-07-2008 à 11:57:57  profilanswer
 

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 ?

n°1760816
Joel F
Real men use unique_ptr
Posté le 17-07-2008 à 13:38:02  profilanswer
 

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
mood
Publicité
Posté le 17-07-2008 à 13:38:02  profilanswer
 

n°1760922
titof31
Posté le 17-07-2008 à 15:08:53  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
Lecture fichier en binaire et valeur en hexamodification fichier *.set
Changer un même texte sans modifier toutes les pages[Resolu] asp.net/C#/SQl server2005 affichage resultats recherche
Extraire lignes d'un fichier .csv avec Visual C++[PHP] Webmails et texte brut
export table SQL vers fichier[C] Operand incorect .
Plus de sujets relatifs à : Indicer les lignes d'un fichier texte avec C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR