18. juni 2002 - 10:17Der er
6 kommentarer og 1 løsning
læs linie i tekstfil
Hvordan indlæser jeg en hel linie (uanset længde) fra en tekstfil åbnet med ifstream? Den skal gemmes i char[] eller string format, problemet er at jeg ikke kender længden af den enkelte linie og jeg vil gerne undgå overallokering...
Hvis du ikke kender den maksimale længde af een linie i filen, bliver du nødt til at antage at den er = filens længde, eller sætte en forventet max. på f.eks. 2000 tegn pr. linie.
Jeg har i et tilsvarende program simpelthen gjort det, at jeg gennemlæser filens første 32 KB (via en midlertidig buffer) og så finder den maksimale record længde indenfor disse 32 KB. Dernæst allokerer jeg hvad der er nødvendigt for at behandle hele filen.
Du kan eventuelt prøve med getline-funktionen. Den læser data fra en input-stream, og gemmer den i en string. Som standard (Som i eksemplet) læser den indtil den finder en newline ('\n'). Men den KAN sættes til at bruge et andet tegn som 'delimiter' ved at skrive f.eks.: getline(ifs, s, ' '), så indlæser den indtil den finder et mellemrum.
Eksemplet indlæser en simpel tekstfil, linje efter linje, og udskriver dem til consolen:
Ahh... Så har du sandsynligvis inkluderet string sådan her: #include <string.h>
Men for at få fat i getline skal du også lige tilføje: #include <string> // Uden .h
Jeg troede i starten det var to måder at skrive det samme (Med og uden .h), men det er det absolut ikke, begge filerne eksisterer, og indholdet er vidt forskelligt :)
Det er garanteret det! Jeg får kun et par andre småfejl nu, men det er ikke i forbindelse med dette...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.