|
| 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
| |
|
|