Toon posts:

[C++]Inlezen file en per regel 7 variabelen opslaan?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil deze file "results.txt" inlezen:

438|14556|174|2|0|1|200
437|14556|0|1|1|0|304
438|14558|2625|2|0|1|200
568|14566|0|2|0|1|304

en elk van de waarden gescheiden door een | apart in een matrix opslaan, in dit geval dus matrix[4][7]
matrix[0][0] = 438
matrix[0][1] = 14556
matrix[0][2] = 174
matrix[0][3] = 2

Enz

Wie kan mij hiermee helpen?

Verwijderd

Je kan gewoon karakter per karakter inlezen in een char buffer, wanneer je karakter | is
dan copy je gewoon de inhoud van je buffer naar een array.
teller++

Dit doe je tot als je aan EOF zit.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat heb je zelf al geprobeerd en gevonden? Waarom voldeed dat niet aan jouw eisen? Heb je P&W FAQ - De "quickstart" gelezen? :)

Het is natuurlijk niet de bedoeling dat mensen hier jouw code gaan schrijven, en een beetje eigen inzet mag dus well. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Per karakter inlezen, pointer schuiven bij |, pointer resetten en andere verschuiven bij \n.
Let er een beetje op dat matrixes niet zo ontzettend dynamisch te maken zijn :P

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
of een van de versies van get/getline die een delimiter als argument hebben

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
farlane schreef op dinsdag 12 april 2005 @ 17:20:
of een van de versies van get/getline die een delimiter als argument hebben
Zal wel moeten (denk ik), want afaik kan je met cin geen newline herkennen...

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Verwijderd

code:
1
2
3
4
5
6
while karakters != '\n'
{
  lees karakters en plaats in variabele
  als karakter '|' is
    nieuwe veriabale
}

[ Voor 17% gewijzigd door Verwijderd op 13-04-2005 12:05 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

of regel voor regel in 1 keer met een sscanf() inlezen....maar dat is puur C, en geen C++ ;)

[ Voor 33% gewijzigd door Creepy op 13-04-2005 12:08 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Creepy: Alleen een beetje lastig als je niet vantevoren weet hoeveel kolommen de matrix heeft ;)

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.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Tuurlijk, maar of dat zo is is natuurlijk de vraag, want dat heeft de TS niet aangegeven :P

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Pietertje
  • Registratie: Januari 2002
  • Laatst online: 08-05 10:11

Pietertje

The Rock

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str[] ="This is a sample string,just testing.";
char * pch;
printf ("Splitting string \"%s\" in tokens:\n",str);
pch = strtok (str," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.");
}
return 0;
}

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
riezebosch schreef op woensdag 13 april 2005 @ 12:03:
[...]
Zal wel moeten (denk ik), want afaik kan je met cin geen newline herkennen...
Tuurlijk wel. Waar dacht je dat getline vanaf leest?

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


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 08-05 19:46

Robtimus

me Robtimus no like you

Misschien een idee om voor een vector van vectoren te gaan, als zowel het aantal rijen als het aantal kolommen variabel is?

@Pieter_Stoffelen: is dat de thread-safe manier of juist niet?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
riezebosch schreef op woensdag 13 april 2005 @ 12:03:
[...]


Zal wel moeten (denk ik), want afaik kan je met cin geen newline herkennen...
cin is een istream, dus heeft deze functies ook.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Ja, maar ik bedoel dan ook dat je cin.getline() zult moeten gebruiken omdat met cin >> char_array je geen newlines kunt herkennen. Toch?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Kan inderdaad niet, maar >> is ernstig overloaded. Sowieso wil je geen >> char_array doen. Kijk maar eens in de Microsoft April critical security patch lijst. Fixed-size buffers waren nuttig in 1980. >>std::string stopt al bij een spatie, dus daar red je het niet mee. Wat >> yourType doet kan ik niet zeggen. Die zou best kunnen stoppen bij een newline.

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


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Hij stopt wel bij een newline, maar je kan geen onderscheid maken tussen een newline en een spatie.

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1