/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Indlæse data med mellemrum, fra tekstfil.
Fra : Henrik Koksby Hansen


Dato : 29-05-02 14:17

Hej.

Jeg har en masse data, som jeg gemmer i en tekstfil.

Det er jo forholdsvis simpelt at indlæse data, hvis de er separeret
med mellemrum - på følgende måde:

while(inClientFile >> vaerdi1 >> vaerdi2 >> vaerdi3) {
funktionSomBehandlerIndlaesteData(vserdi1,vaerdi2,vaerdi3);
}

Men hvad hvis disse værdier indeholder mellemrum!? Så ville det være
smart, i tekstfilen, at adskille dem med et tegn; komma, f.eks.
- Men hvordan pokker får man dem så indlæst igen???

Nogle gode bud?



/Henrik

 
 
Igor V. Rafienko (29-05-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 29-05-02 15:17

[ Henrik Koksby Hansen ]

[ snip ]

> Men hvad hvis disse værdier indeholder mellemrum!? Så ville det være
> smart, i tekstfilen, at adskille dem med et tegn; komma, f.eks. -
> Men hvordan pokker får man dem så indlæst igen???


std::getline?





ivr
--
C++: "an octopus made by nailing extra legs onto a dog"
            -- Steve Taylor, 1998

Henrik Koksby Hansen (29-05-2002)
Kommentar
Fra : Henrik Koksby Hansen


Dato : 29-05-02 16:03

On 29 May 2002 16:16:30 +0200, igorr@ifi.uio.no (Igor V. Rafienko)
wrote:

>[ Henrik Koksby Hansen ]
>
>[ snip ]
>
>> Men hvad hvis disse værdier indeholder mellemrum!? Så ville det være
>> smart, i tekstfilen, at adskille dem med et tegn; komma, f.eks. -
>> Men hvordan pokker får man dem så indlæst igen???
>
>
>std::getline?
[...]

Jeg ved, hvordan man bruger getline til almindeligt keyboardinput.

Jeg forestiller mig noget med, at jeg skal søge efter de tegn, som jeg
vil have til at adskille dataene, for, herefter, at flytte 'curseren'
(ku ikke lige komme på et bedre ord) til den første bit efter dette
tegn - og bruge getline til at læse det antal bits, der nu måtte være,
hen til det næste adskilletegn.
Mmm... Hvordan gøres det rent praktisk? Jeg er pænt grøn i
filbehandling, skal det lige siges.

- Er der nogle steder på nettet jeg evt. kan læse mere om det, jeg
gerne vil have programmet til at kunne? - Gerne med konkrete
eksempler. :)


MVH
Henrik

Igor V. Rafienko (29-05-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 29-05-02 16:12

[ Henrik Koksby Hansen ]

[ snip ]

> >std::getline?
>
> Jeg ved, hvordan man bruger getline til almindeligt keyboardinput.


Så hva er problemet da?


> Jeg forestiller mig noget med, at jeg skal søge efter de tegn, som
> jeg vil have til at adskille dataene,


Ah, så ordseparator består av _flere_ tegn, ikke bare ett?


> for, herefter, at flytte 'curseren' (ku ikke lige komme på et bedre
> ord) til den første bit efter dette tegn - og bruge getline til at
> læse det antal bits, der nu måtte være, hen til det næste
> adskilletegn. Mmm... Hvordan gøres det rent praktisk? Jeg er pænt
> grøn i filbehandling, skal det lige siges.


std::getline( stream, buffer, separator )

gjør det du trenger, forutsatt at separator består av 1 tegn. Dersom
separator består av flere tegn, må man nesten få vite litt mer om
problemstillingen.


> - Er der nogle steder på nettet jeg evt. kan læse mere om det, jeg
> gerne vil have programmet til at kunne? - Gerne med konkrete
> eksempler. :)


<URL:http://www.amazon.co.uk/> er et bra sted å begynne. ISBN finner
du på <URL:http://www.accu.org/> (jeg spøker ikke).





ivr
--
C++: "an octopus made by nailing extra legs onto a dog"
            -- Steve Taylor, 1998

Henrik Koksby Hansen (29-05-2002)
Kommentar
Fra : Henrik Koksby Hansen


Dato : 29-05-02 16:17

>> Jeg forestiller mig noget med, at jeg skal søge efter de tegn, som
>> jeg vil have til at adskille dataene,
>
>
>Ah, så ordseparator består av _flere_ tegn, ikke bare ett?
[...]

Nej, jeg mener at jeg har flere datasekvenser, som adskilles. Derfor
må der ialt, nødvendigvis, være flere tegn, som adskiller dem.

Men jo, der er kun ét tegn til at adskille to datastrenge.

>std::getline( stream, buffer, separator )
>
>gjør det du trenger, forutsatt at separator består av 1 tegn. Dersom
>separator består av flere tegn, må man nesten få vite litt mer om
>problemstillingen.
[...]

Det ligner præcis det jeg skal bruge! - Jeg prøver mig lidt frem...
Takker....


MVH
Henrik

Martin Moller Peders~ (29-05-2002)
Kommentar
Fra : Martin Moller Peders~


Dato : 29-05-02 17:08

In <ff35b926.0205290516.2d25ccbf@posting.google.com> kaptajnen@koksby.dk (Henrik Koksby Hansen) writes:

>Hej.

>Jeg har en masse data, som jeg gemmer i en tekstfil.

>Det er jo forholdsvis simpelt at indlæse data, hvis de er separeret
>med mellemrum - på følgende måde:

>while(inClientFile >> vaerdi1 >> vaerdi2 >> vaerdi3) {
> funktionSomBehandlerIndlaesteData(vserdi1,vaerdi2,vaerdi3);
>}

>Men hvad hvis disse værdier indeholder mellemrum!? Så ville det være
>smart, i tekstfilen, at adskille dem med et tegn; komma, f.eks.
>- Men hvordan pokker får man dem så indlæst igen???

>Nogle gode bud

Hvad med "flex" ?

Mvh
Martin

Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste