[C++] Char wil niet naar Int ?

Pagina: 1
Acties:

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Naar veel gepiel krijg ik het eindelijk zo dat mijn eerste test progje een .txt file inleest... Helaas is dit een speciale text file die nummers bevat:
code:
1
2
3
4
5
6
7
8
9
255
1
43
80
44
90
10
10
255

etc... Dit lees ik met deze code in:
code:
1
2
3
4
5
6
7
8
9
10
11
<snip>
char        buffer[8];
    ifstream LineFile ("blaat.txt");

    while (! LineFile.eof() )
    {
        counter++;
        LineFile.getline (buffer,8);
        cout<<(int)buffer<<"\n";
    }
    LineFile.close();

Maar: als ik die (int) in die cout regel laat staan, krijg ik OVERAL 1245036 uit, wat mij toch enigzins verbaasd (de compiler vond het ook niet altijd even leuk... :))

Hoe kan dit? Met VB ben ik gewoon gewend om val(string) te doen, en klaar... :+

Verwijderd

Om te cout'en heb je geen int nodig.
Dat kan gewoon zo.

Maar wil je voor de rest van je programma de char omzetten naar een integer gebruik dan atoi:

char string[8];
int i;

i = atoi(string);

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Om te cout'en heb je geen int nodig.
Dat kan gewoon zo.
Dat wist ik, maar het moet in een int array.
Maar wil je voor de rest van je programma de char omzetten naar een integer gebruik dan atoi:
Uit welke .h file komt dit? En, waar staat atoi voor (dan onthoud ik het misschien :))?

Verwijderd

Op woensdag 15 mei 2002 20:21 schreef Battle_Bunny het volgende:
Uit welke .h file komt dit? En, waar staat atoi voor (dan onthoud ik het misschien :))?
Waar is jouw manual dan!? :?

Verwijderd

h file:
#include <stdlib.h>

Maar zoek even dit is al meerdere malen voorbijgegaan

  • Battle Bunny
  • Registratie: Oktober 2001
  • Laatst online: 02-02 21:41
Waar is jouw manual dan!? :?
Euh... Op www.google.com, gathering.tweakers.net, en nog een paar ;)


Serieus, boeken werken niet bij mij...
h file:
#include <stdlib.h>
Mijn dank is groot !

Verwijderd

Je typecast nu in feite een pointer naar int. Dat gaat natuurlijk niet goed :). atoi is inderdaad de manier om het te doen. RTFM ;)

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 00:49
Op woensdag 15 mei 2002 20:18 schreef Battle_Bunny het volgende:
Naar veel gepiel krijg ik het eindelijk zo dat mijn eerste test progje een .txt file inleest... Helaas is dit een speciale text file die nummers bevat:
code:
1
2
3
4
5
6
7
8
9
255
1
43
80
44
90
10
10
255

etc... Dit lees ik met deze code in:
code:
1
2
3
4
5
6
7
8
9
10
11
<snip>
char        buffer[8];
    ifstream LineFile ("blaat.txt");

    while (! LineFile.eof() )
    {
        counter++;
        LineFile.getline (buffer,8);
        cout<<(int)buffer<<"\n";
    }
    LineFile.close();

Maar: als ik die (int) in die cout regel laat staan, krijg ik OVERAL 1245036 uit, wat mij toch enigzins verbaasd (de compiler vond het ook niet altijd even leuk... :))

Hoe kan dit? Met VB ben ik gewoon gewend om val(string) te doen, en klaar... :+
1) .eof() werkt niet predictief. eof() hoeft niet gezet te zijn na de laatste goede read. Dus je leest (tevergeefs) de volgende regel, maar doet dan wel een cout <<

2) in C++ doe je gewoon int buffer; while ( LineFile >> buffer) ...

3) LineFile.close() gebeurt automatisch in z'n dtor

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Op donderdag 16 mei 2002 11:11 schreef MSalters het volgende:
3) LineFile.close() gebeurt automatisch in z'n dtor
Dat wil nog niet zeggen dat je voor de duidelijkheid niet toch ff die regel erachter gooit, ook al is de destructor zo gebouwd dat het eigenlijk niet hoeft.

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Op woensdag 15 mei 2002 20:21 schreef Battle_Bunny het volgende:
En, waar staat atoi voor (dan onthoud ik het misschien :))?
"All to int" naar ik meen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08-09 12:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 16 mei 2002 12:21 schreef Dash2in1 het volgende:

[..]

"All to int" naar ik meen.
:D

nee die a staat ascii :)
.edit: hoewel ook gezegd wordt dat het alphanumeric is... een van die 2 iig :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1