C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[newbie] dev-c++ et std::getline(ifstream , string)

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
TSalm
Guest





PostPosted: Wed May 10, 2006 12:22 pm    Post subject: [newbie] dev-c++ et std::getline(ifstream , string) Reply with quote



Bonjour à tous,

Dev-cpp refuse de compiler un programme utilisant
std::getline(ifstream,string). Il me dit :
no matching function for call to `getline(std::istream&, std::string
(&)())'

Si quelqu'un a un idée d'avance merci

Ci-dessous le code complet :
#include <string>
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

void usage() {
cout << "Usage: nomFichier texteAChercher" << endl;
}

/* Retourne 0 en cas d'erreur, sinon 1 */
int testOuvertureFichier(ifstream &file) {
// teste ouverture :
if ( !file )
{
cerr << "Erreur d'ouverture\n";
return 0;
}

// teste lecture
string line;
if ( ! ( file >> line ) )
{
cerr << "Erreur de lecture\n";
return 0;
}

return 1;
}

int exit() {
system("PAUSE");
return EXIT_SUCCESS;
}
int main(int argc, char *argv[])
{
if (argc != 3) {
cout << "Erreur dans les paramétres :" << endl;
cout << "Vous avez entrée "<<argc<<" paramétres"<<endl;
usage();
return exit();
}

string fichier = argv[1];
string text = argv[2];
string ligne ();
unsigned int ligne_nbr = 0;

ifstream in(fichier.c_str());
if (testOuvertureFichier(in) == 0) {
cout << "Echec dans l'ouverture du fichier " << fichier << endl;
exit();
}

std::getline (cin , ligne);
while (std::getline(in , ligne)) {
// voir si chaine dans la ligne :
if (ligne.find(text) != std::npos)
cout << ligne_nbr << ": " << ligne << endl;
++ligne_nbr;
}

exit();
}
Back to top
Guest






PostPosted: Wed May 10, 2006 12:22 pm    Post subject: Re: dev-c++ et std::getline(ifstream , string) Reply with quote



merci !

(j'avais pas vu les réponse, désolé :/ )
Back to top
Guest






PostPosted: Wed May 10, 2006 12:22 pm    Post subject: Re: dev-c++ et std::getline(ifstream , string) Reply with quote



Il y a également une autre erreur dans mon prog :
remplacer
std::npos par std::string::npos
Back to top
Guest






PostPosted: Wed May 10, 2006 12:22 pm    Post subject: Re: dev-c++ et std::getline(ifstream , string) Reply with quote

bon, je viens de trouver : je devais juste initaliser le string de la
façon :
string ligne("");
mais je vois pas le rapport avec le message d'erreur ??
Back to top
Michel Decima
Guest





PostPosted: Wed May 10, 2006 12:22 pm    Post subject: Re: [newbie] dev-c++ et std::getline(ifstream , string) Reply with quote

"TSalm" <nospam (AT) nospam (DOT) no> a écrit dans le message de
news:4461cfdf$0$14029$626a54ce (AT) news (DOT) free.fr...
Quote:
Bonjour à tous,

Dev-cpp refuse de compiler un programme utilisant
std::getline(ifstream,string). Il me dit :
no matching function for call to `getline(std::istream&, std::string
(&)())'

Tu veux appeler une fonction getline dont le deuxieme parametre est une
reference
sur une chaine /std::string&/, et le compilateur te dit qu'il ne trouve pas
de
fonctions getline dont le deuxieme parametre est un une reference vers une
fonction
qui renvoie une chaine et ne prends aucun parametres /std::string (&)()/

Dans le main, la variable ligne est declaree comme ceci:

string ligne();

Ce qui est effectivement la declaration d'une fonction. En enlevant les
parentheses,
ca devrait aller beaucoup mieux:

string ligne;
Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed May 10, 2006 12:22 pm    Post subject: Re: [newbie] dev-c++ et std::getline(ifstream , string) Reply with quote

TSalm <nospam (AT) nospam (DOT) no> writes:

Quote:
Bonjour à tous,

Dev-cpp refuse de compiler un programme utilisant
std::getline(ifstream,string). Il me dit :
no matching function for call to `getline(std::istream&, std::string (&)())'

Il te dis que tu appelles getline avec comme second argument une
fonction retournant un string...

Cette ligne

Quote:
string ligne ();

ne fait pas ce que tu crois. Elle declare une fonction et ne definit
pas une variable en appelant le constructeur par defaut comme tu dois
le croire.

string ligne;

Quote:
if (ligne.find(text) != std::npos)

std::string::npos

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.