Bonjour à tous

Après avoir placé un fichier en mémoire, je tente d'en extraire (au moins) une ligne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#include <fstream> 
#include <iostream> 
#include <sstream> 
 
int main() 
{ 
    std::ifstream fichier( "config.ini" ); 
    std::stringstream buffer;
 
    buffer << fichier.rdbuf(); 
    fichier.close(); 
 
    std::cout << buffer.str().getline() << std::endl; // error : std::basic_stringstream<char>::__string_type' has no member named 'getline'
    std::cout << buffer.getline() << std::endl; // error: no matching function for call to 'std::basic_stringstream<char>::getline()
}
J'ai placé les erreurs renvoyées en commentaire.

Dans le premier cas il n'y aurait pas de membre du nom de getline. Pourtant un appel tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::cout << buffer.str().find("test") << std::endl;
fonctionne très bien. Et lorsque je lis le référentiel il existe bien pour string une méthode surchargée getline.


Pour le second cas, il ne trouve pas de fonction correspondante pour getline alors que la aussi, il existe une fonction getline héritée de istream selon le référentiel.


Il semblerait que je n'ai pas fourni d'arguments alors qu'il en faudrait dans le premier cas 3 et dans le second 2 selon les propositions candidates.

Comment puis-je alors écrire correctement ces appels pour simplement, extraire une ligne et l'afficher ?

Merci de vos conseils.