Archief - [ALG]C++ Bestand inlezen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Crazed

Legacy Member
Hey,
Ik ben een complete C++ noob en heb het volgende probleem:

Allereerst de code:
Code:
void start()
{
  system("cls");
  ifstream bestand( "galgje.txt" );
  cout<<bestand;
  cin.get();
}

Nu krijg ik, gelijk wat er in galgje.txt staat, de waarde 0x22fe24 op m'n scherm ipv de inhoud van galgje.txt... Waar ligt het probleem??

edit: blijkbaar is er iets mis gegaan met de prefixes... Mijn excuses hiervoor...

Vich

Legacy Member
Ik zou de documentatie van ifstream maar even nalezen ;)

Het werkt ongeveer als volgt:
Code:
ifstream bestand("galgje.txt");
string buffer;
while(bestand)
{
    std::getline(bestand, buffer);
    cout << buffer << endl;
}

Crazed

Legacy Member
Bedankt vich, hij leest m'n bestand nu wel in, maar toch is er nog een probleempje...

De laatste regel wordt om de een of de andere reden 2x weergegeven...
dus als in galgje.txt staan:
test
testje


dan krijg ik in m'n programma te zien:
test
testje
testje

MacK

Legacy Member
Crazed, gij moet uw fysica leren ipv u bezig te houden met scriptjes ;)

PS: volgens mij gebeurt er dit ( ik ben eerder voor C# dus ik gis maar wat)

Hij gaat 2 keer door uw bestand :
1x voor "test"
1x voor "testje"

Daarna is while (bestand) nog steeds true want hij heeft iets kunnen lezen.. Daarom gaat hij nog eens proberen om getline te doen... deze resulteert in bestand = false. , EN gaat hij cout << buffer doen... waarin nog steeds die "testje" zit..

Psychokillah

Legacy Member
1. Doet ge da nu expres ofzo, die prefix [ALG] nemen? READ THE DAMN RULES!!
2. Lang geleden dak ifstream nog es heb gebruikt, maar ik denk dat ge uwen while best expliciet aangeeft dat em maar tot eof (end of file) mag gaan. Want nu gaat em opt einde komen en de while nog es doorlopen en dus ook den buffer nog es afprinten
3. Mack, tis ni scripten maar proggen

MacK

Legacy Member
mja , kweet dat het proggen is, maar twas in een rapke getypt :) .. Ik zag dat ik Crazed kende van school en ik herinnerde hem even aan zijn Examen Fysica van maandag...

Maar ja :offtopic: dus..

Crazed

Legacy Member
Tnx all... Alles werkt zoals het zou moeten

@Mack: ge zit toch ook achter uwe pc ipv te leren
@Psychokillah: lees m'n eerste bericht... Er is ergens iets misgegaan, maar ik weet niet echt waar... wrs met te scrollen dat de prefix is veranderd in ALG ipv PROG

killgore

Legacy Member
Psychokillah zei:
das de pap in de mond geven he Killgore :p
Allé dan, hier bijkomende uitleg zodat em tenminste begrijpt wat ek typte :p:
Dat type ifstream heeft een interne bestands pointer, die bij het openen aan het begin van een bestand staat.
De .eof methode kijkt of deze niet aan het einde van een bestand staat.
en de getline methode leest een stuk tekst naar de buffer, beginnende van de bestandspointer tot de volgende newline. Daarna plaatst het de bestandsbuffer na de newline voor verdere verwerking.
Zodra deze bestandspointer dus na het lezen van een stukje tekst aan het einde staat geeft .eof() true terug, en moet je dus stoppen met lezen :).

Kvinnet beke belachelijk mensen dergelijke dingen zelf te laten uitzoeken tbh, ge moet et eerst es gezien hebben, zeker als beginnend programmeur.

Vich

Legacy Member
killgore zei:
while(bestand) -> while(!bestand.eof())

tssk vich :p

Thanks :$
Ik wist dat er een eof member was, maar toen ik het onlangs nog eens opzocht(omdat ik ifstream&ofstream nodig had in een nieuw projectje) kreeg ik het zo voorgeschoteld op een website :/
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan