Toon posts:

[C++] Regels uit een textfile uitlezen gaat ernstig mis

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben bezig een programma te maken die gegevens uit een textbal opslaat in een txt file en die later per regel weer op dezelfde plek kan zetten. Niet al te moeilijk idd en in principe doet hij het ook al. Maar nu krijg ik 1 heel raar probleem de gegevens zet c++ dus wel per regel in een tekstfile. dus zo:

Henk
Bok
Knaktorweg 17
7893AP
Klaplong

tot zover alles goed maar als ik hem opvraag dan krijg ik het volgende

Henk
Bok
Knaktorwe
g 7
7893AP

alle regels waar een woord langer is dan 9 karakters breekt hij ze af en slaat ze op in de volgende string ik maak gebruik van #include <fstream.h>

ik zet de bestanden op de volgende manier in de file


ofstream str(bestandsnaam)
str << voornaam << '\n';
str << achternaam << '\n';
str << adres << '\n';
str << postcode<< '\n';
str << woonplaats<< '\n';


en haal ze er als volgt weer uit bijvoorbeeld voornaam ( de rest gaat op dezelfde manier)


ifstream str;
str.open (bestandsnaam)
char voornaam[50];
str.getline(voornaam,'\n');
deze voornaam zet ik daarna in een CString omdat ik met mfc werk. Weet iemand wat de reden is dat alles na 9 karakters in een regel word afgekapt ?

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
basic_istream& getline (char_type* s, streamsize n );
basic_istream& getline (char_type* s, streamsize n, char_type delim );
\n > 10de teken in ascii-tabel (inlezen: 9 tekens + \0 = 10).

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-02 19:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gevalletje documentatie lezen dus. Ik denk dat je in de war bent met std::getline, wat een losse functie is die idd de delimiter als parameter verwacht (naast de istream waarop hij moet werken en de string waar het resultaat in komt te staan).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op maandag 26 juni 2006 @ 23:08:
Gevalletje documentatie lezen dus. Ik denk dat je in de war bent met std::getline, wat een losse functie is die idd de delimiter als parameter verwacht (naast de istream waarop hij moet werken en de string waar het resultaat in komt te staan).
wat kan ik nu het beste doen om dit aan te passen ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-02 19:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

De documentatie lezen, zoek std::getline bijvoorbeeld eens op :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op maandag 26 juni 2006 @ 23:24:
De documentatie lezen, zoek std::getline bijvoorbeeld eens op :Y)
Ok dat is nu duidelijk ik maak nu gebruik van getline(naam, 20 ); hij pakt nu 20 karakters van de lijn af :) maar nu heb ik nog een probleem. is het mogelijk om van een char array naar een double of int te gaan ?

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

atoi

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20:38
De algemene manier in C++ is met een stringstream (gedeclareert in sstream):
C++:
1
std::istringstream(string) >> var;

Zie ook: C++ FAQ lite [39.2] How do I convert a std::string to a number?. Dit werkt ook voor C-strings (zero-terminated character arrays) simpelweg omdat std::string daar een constructor voor heeft. Er is overigens ook niet echt iets mis met atoi(), maar pas op met niet-standaard varianten.

Probeer verder je vragen een beetje op een zinnig nivo te houden. GoT is geen alternatief voor de API documentatie lezen en vragen die in de C++ FAQ Lite behandeld worden (wat vaak wel goede vragen zijn, trouwens) zijn ook niet echt interessant op een discussieforum.

[ Voor 10% gewijzigd door Soultaker op 27-06-2006 01:44 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12-2025
Verwijderd schreef op dinsdag 27 juni 2006 @ 00:07:
[...]

Ok dat is nu duidelijk ik maak nu gebruik van getline(naam, 20 ); hij pakt nu 20 karakters van de lijn af :)
Niet doen; lees de hele regel in. Zoek nog eens naat getline :)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1