/ 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
Hente data fra en fil med getline()
Fra : Thomas Korsgaard


Dato : 29-03-04 08:19

Hej NG

Jeg har en fil, som er formateret på følgende måde:

1 2.0 0.8 24 6 3
17 1.7 0.4 23 18 4 24 6
18 1.3 0.5 23 100 17 4
4 2.8 1.2 18 17 6 7 10 11 100
....

Og jeg kunne godt tænke mig at hente dataen ind linje på linje. Indtil
videre har jeg gjort følgende:

ifstream infile("flag.txt");

og vil så indlæse med:

infile.getline(buffer,MAX);

hvor bufffer er et char-array med MAX karakterer. Mit problem er nu at
jeg ikke kan finde ud af hive informationen ud af buffer. Hvordan finder
jeg ud af hvike ints og doubles, som er i buffer? Lige nu er de gemt som
char, og jeg kan ikke lure hvordan jeg skal "parse" dem om til ints
eller doubels. Er der nogen der har en god ide. Den ville være værdsat.

På forhånd tak!
/Thomas Korsgaard

 
 
Ivan Johansen (29-03-2004)
Kommentar
Fra : Ivan Johansen


Dato : 29-03-04 09:48

Thomas Korsgaard wrote:
> Og jeg kunne godt tænke mig at hente dataen ind linje på linje. Indtil
> videre har jeg gjort følgende:
>
> ifstream infile("flag.txt");
>
> og vil så indlæse med:
>
> infile.getline(buffer,MAX);

Jeg vil anbefale at du bruger std::string i stedet for et char array. Så
undgår du problemer med størrelsen.
std::string buffer;
std::getline(infile, buffer);

> hvor bufffer er et char-array med MAX karakterer. Mit problem er nu at
> jeg ikke kan finde ud af hive informationen ud af buffer. Hvordan finder
> jeg ud af hvike ints og doubles, som er i buffer? Lige nu er de gemt som
> char, og jeg kan ikke lure hvordan jeg skal "parse" dem om til ints
> eller doubels. Er der nogen der har en god ide. Den ville være værdsat.

Jeg vil foreslå en stringstream:
std::istringstream Stream(buffer);
double D1, D2;
int I1, I2, I3;

Stream >> I1 >> D1 >> D2 >> I2 >> I3;

Du skal selvfølgelig huske fejltjek og det er muligt at du bliver nødt
til at bruge en løkke i stedet for at konvertere det hele på en linie,
men princippet skulle fremgå.

Ivan Johansen

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste