[newbie] dev-c++ et std::getline(ifstream , string)
5 réponses
TSalm
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>
/* 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;
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
TSalm writes:
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
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;
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
TSalm <nospam@nospam.no> writes:
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
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;
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
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
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;
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
Michel Decima
"TSalm" a écrit dans le message de news:4461cfdf$0$14029$
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;
"TSalm" <nospam@nospam.no> a écrit dans le message de
news:4461cfdf$0$14029$626a54ce@news.free.fr...
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:
"TSalm" a écrit dans le message de news:4461cfdf$0$14029$
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;
tsalm
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 ??
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 ??
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 ??