/ 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
c++ læsning fra en txt fil
Fra : Thomas


Dato : 07-12-02 03:44

Hej
Jeg har en simpel highscoreliste i mit c++ dos program.

TXT filen har to linier:
Thomas
23413

Den vil jeg gerne indlæse:

#include <iostream>
#include <fstream>
#include <string>
ifstream input_fil("highscore.txt");
string rekordindehaver;
int rekord;
input_fil >> rekordindehaver;
input_fil >> rekord;
cout << "Highscoren indehaves af " << rekordindehaver << " med " << rekord
<< " points." << endl;

Hvilket fungerer ok indtil den skal vise tallet .....her viser den noget
helt forkert?



 
 
Thomas Lykkeberg (07-12-2002)
Kommentar
Fra : Thomas Lykkeberg


Dato : 07-12-02 11:51

On Sat, 7 Dec 2002 03:44:27 +0100, "Thomas" <asd@asd.de> wrote:

>Hej
>Jeg har en simpel highscoreliste i mit c++ dos program.
>
>TXT filen har to linier:
>Thomas
>23413
>
>Den vil jeg gerne indlæse:
>
>#include <iostream>
>#include <fstream>
>#include <string>
>ifstream input_fil("highscore.txt");
>string rekordindehaver;
> int rekord;
> input_fil >> rekordindehaver;
> input_fil >> rekord;
> cout << "Highscoren indehaves af " << rekordindehaver << " med " << rekord
><< " points." << endl;
>
>Hvilket fungerer ok indtil den skal vise tallet .....her viser den noget
>helt forkert?
Det er fordi 23413 er en "string". Prøv at ændre rekord til en string
type. Du kan konverterer rekord til en int bagefter.

/Thomas


Thomas (07-12-2002)
Kommentar
Fra : Thomas


Dato : 07-12-02 12:26

Hej Thomas

Tak for hjælpen. Jeg har forsøgt at konverterer rekord til int vha. følgende
metoder:

int points = int(rekord);
//error C2440: 'type cast' : cannot convert from 'class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >' to 'int

int points = atoi(rekord);
//error C2664: 'atoi' : cannot convert parameter 1 from 'class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >'
//to 'const char *' No user-defined-conversion operator available
that can perform this conversion, or the operator cannot be called

int points = strtol(rekord,NULL,10);
//error C2664: 'strtol' : cannot convert parameter 1 from 'class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >

Men uden held. Hvad gør jeg forkert?


"Thomas Lykkeberg" <Fornavn.Efternavn@privat.dk> wrote in message
news:4lk3vuojq1hbjdpei7raq9hptfpa6sdbnb@4ax.com...
> On Sat, 7 Dec 2002 03:44:27 +0100, "Thomas" <asd@asd.de> wrote:
>
> >Hej
> >Jeg har en simpel highscoreliste i mit c++ dos program.
> >
> >TXT filen har to linier:
> >Thomas
> >23413
> >
> >Den vil jeg gerne indlæse:
> >
> >#include <iostream>
> >#include <fstream>
> >#include <string>
> >ifstream input_fil("highscore.txt");
> >string rekordindehaver;
> > int rekord;
> > input_fil >> rekordindehaver;
> > input_fil >> rekord;
> > cout << "Highscoren indehaves af " << rekordindehaver << " med " <<
rekord
> ><< " points." << endl;
> >
> >Hvilket fungerer ok indtil den skal vise tallet .....her viser den noget
> >helt forkert?
> Det er fordi 23413 er en "string". Prøv at ændre rekord til en string
> type. Du kan konverterer rekord til en int bagefter.
>
> /Thomas
>



Igor V. Rafienko (07-12-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 07-12-02 15:34

[ Thomas Lykkeberg ]

[ ... ]

> >Hvilket fungerer ok indtil den skal vise tallet .....her viser den noget
> >helt forkert?
>
> Det er fordi 23413 er en "string". Prøv at ændre rekord til en
> string type. Du kan konverterer rekord til en int bagefter.


Eh?





ivr
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Igor V. Rafienko (07-12-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 07-12-02 15:39

[ asd@asd.de ]

[ ... ]

> TXT filen har to linier:
> Thomas
> 23413

[ ... ]

> string rekordindehaver;
> int rekord;
> input_fil >> rekordindehaver;
> input_fil >> rekord;

[ ... ]

> Hvilket fungerer ok indtil den skal vise tallet .....her viser den
> noget helt forkert?


Nøyaktig _hva_ går galt? Koden over skulle virke helt fint (med et
lite forbehold -- hvis INT_MAX er mindre enn det tallet du prover å
lese, så blir utskriften fra programmet feil (iallfall i forhold til
hva en skulle forvente)).

(En annen ting er at det er lurt å sjekke stream state etter en input
operasjon).





ivr
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Claus Rasmussen (07-12-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 07-12-02 23:47

Thomas wrote:

> Hvilket fungerer ok indtil den skal vise tallet .....her viser den noget
> helt forkert?

Hvad virker forkert ? Vis hvad der helt præcist sker, ellers kan
vi ikke hjælpe dig. Jeg har prøvet at køre dit program på min
maskine, og her virker det perfekt.

-Claus


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

Månedens bedste
Årets bedste
Sidste års bedste