C++ Getline-problemen (Geen instantie van overbelaste functie getline

Ik weet dat ik het weet.
Deze vraag is al eerder gesteld, maar ik heb alle antwoorden bekeken en geen enkele lijkt mijn probleem op te lossen. Als ik de getline-functie gebruik om de inhoud van een regel in het bestand te krijgen, werkt het niet.

getline(file, line);

‘Bestand’ wordt hier gedeclareerd:

ifstream File;
File.open("fruit.txt");

en ‘line’ wordt hier gedeclareerd:

int line = 0;

Getline is rood onderstreept met dit bericht:

getline
no instance of overloaded function "getline" matches the argument list
argument types are :(std::ifstream, int)

Dit betekent dat geen enkele getline de lijst met argumenten van de bestandsstroom en een geheel getal heeft.

Dit heeft geen zin, aangezien alle andere vragen over deze kwestie precies dat aangeven, dat de argumenten zijnde bestandsstroom en een geheel getal.

Wat doe ik verkeerd?

BEWERKEN:

Hier is de volledige code:

ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
int C_FRUIT = getline(fruitFile, line);
fruitFile.close();

De eerste regel moet een nummer zijn, en ik heb het nodig.


Antwoord 1, autoriteit 100%

getline()leest één regel tekst voor. Het kan niet direct een int lezen. Dit is de reden waarom u uw foutmelding krijgt.

Je moet er rekening mee houden dat er twee getline()zijn. Er is er een die istream::getline()en std::getline()is. Beide hebben verschillende handtekeningen. De eerste is een lidfunctie van een stream en wordt gedefinieerd in de streamheader; de laatste is gedefinieerd in de <string>header.

Maar let op: de retourwaarde van std::getline()is geen int! Het is een stream-referentie. Dit is de reden waarom u een tweede compilerfout krijgt.

Ten slotte, als je een geheel getal x wilt lezen, is het gemakkelijker om extractors te gebruiken:

int value; 
fruitFile >> value; 
fruitFile.ignore(SIZE_MAX, '\n');   // in case you'd need to go to next line

Of als je echt een int in een volledige regel wilt lezen:

string line;
getline(fruitFile, line); 
stringstream sst(line);     // creates a string stream: a stream that takes line as input
sst >> value;      

Antwoord 2, autoriteit 100%

Het tweede argument van getline moet een string zijn: http://www. cplusplus.com/reference/string/string/getline/

Ik denk dat wat je probeert te bereiken is:

ifstream fruitFile;
fruitFile.open("fruit.txt");
int line = 0;
fruitFile >> line
fruitFile.close();

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes