besoin d'aide en c++ - C++ - Programmation
Marsh Posté le 26-11-2009 à 20:26:17
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 :
|
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 :
|
berk.
Marsh Posté le 26-11-2009 à 20:55:04
>> s'arrete au premier caractere d'espacement.
std::getline est la façon préconisée de proceder
Marsh Posté le 26-11-2009 à 21:02:23
C'est bien ce que je pensais mais j'avais peur de confondre avec scanf.
Marsh Posté le 26-11-2009 à 19:51:16
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