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

  FORUM HardWare.fr
  Programmation
  C++

  besoin d'aide en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide en c++

n°1945094
mickael006
Posté le 26-11-2009 à 19:51:16  profilanswer
 

Bonjour à tous,
 
Voilà ,j'ai un petit problème en programmation c++. Je cherche à lire un fichier .txt qui contient pour chaque ligne, un nom de livre ainsi que le nom de l'auteur, les deux éléments étant séparés par un "$". Je cherche pour le moment simplement à lire le nom du livre de la première ligne.
Voici ce que j'ai trouve jusqu'à présent:
 
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
 
int main (int argc, char*const argv[]){
 
string a;
int b;
string titre;
int nb_livres;
ifstream fin ("livres.txt" );
fin>>nb_livres;
for (b=0;b<nb_livres; b++){
string titre="";
while(a!="$" ){
fin>>a;
titre=titre+a+" ";
}
cout<<titre<<endl;
}
cout<<endl;
system("pause" );
return 0;
}
 
 
Seulement, cela ne fonctionne pas, j'aimerais donc savoir pourquoi et avoir vos conseils pour continuer à lire la suite du fichier et ranger chaque élément (titre et nom) dans un tableau.
Merci d'avance et à bientôt,
Michael


Message édité par mickael006 le 26-11-2009 à 19:51:47
mood
Publicité
Posté le 26-11-2009 à 19:51:16  profilanswer
 

n°1945102
ptitchep
Posté le 26-11-2009 à 20:26:17  profilanswer
 

Salut
 
tu devrais selon moi lire une ligne complète avec std::getline (je ne sais pas où s'arrête operator>> )
http://www.cplusplus.com/reference/string/getline/
Puis rechercher $ dedans (je suppose que les titres et les auteurs ne peuvent pas contenir $) avec std::string::find ou quelque chose dans le genre et ensuite découper avec std::string::substr
http://www.cplusplus.com/reference/string/string/
 
à mon avis quand tu fais

Code :
  1. fin>>a;

il lit toute la ligne (ou il s'arrête au premier espace?) donc a n'est jamais égal à "$" (tout seul). Cela pourrait peut-être marcher si a était un caractère, mais lire caractère par caractère...

Code :
  1. system("pause" );

berk.


---------------
deluser --remove-home ptitchep
n°1945107
Joel F
Real men use unique_ptr
Posté le 26-11-2009 à 20:55:04  profilanswer
 

>> s'arrete au premier caractere d'espacement.
std::getline est la façon préconisée de proceder

n°1945108
ptitchep
Posté le 26-11-2009 à 21:02:23  profilanswer
 

C'est bien ce que je pensais mais j'avais peur de confondre avec scanf.


---------------
deluser --remove-home ptitchep

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

  besoin d'aide en c++

 

Sujets relatifs
Besoin aide recuperation liens htmlBesoin d'aide pour script Bash
besoin d'aide sur une correctionbesoin d'aide sur 2 exercices en pascal
Besoin d aide SVPBesoin d'aide sur ce script si possible
[VBA] Besoin d'aide pour macroBesoin d'aide pour une requête MySQL jointe + affichage (hiérachie)
[Résolu][Expression Régulière] Besoin d'aideShell : besoin d'aide pour mon script
Plus de sujets relatifs à : besoin d'aide en c++


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