Avatar billede anders_stigaard Nybegynder
13. januar 2006 - 12:40 Der er 16 kommentarer og
1 løsning

Læs fra tekst fil, et tal af gangen!

Jeg har en txt fil med indhold som dette:

30
4
36
45
154
48
OSV.

Koden indtil vidrer:

----------------------------------------------------

int Vind_k;   
char chr[20];

ifstream in("vind.txt");

if(!in)
{
    cout << "Kan ikke åbne fil" << endl;
    return 1;
}

in >> chr;

Vind_k = atoi(chr);

cout << Vind_k; //(Dette tal jeg skal bruge hver gang, bare for
                // at teste jeg udskriver det)

cout << endl;

in.close();

-------------------------------------------

Næste gang jeg kører koden vil jeg gerne have fat i det næste tal i filen osv..

hvordan kan dette løses nemmest?
Avatar billede arne_v Ekspert
13. januar 2006 - 12:59 #1
når du åbner filen starter du altid med at læse fra toppen

enten skal du holde filen åben og bare læse for hvert kald eller så skal du læse
alle tand ind i et array og så hente fra det
Avatar billede anders_stigaard Nybegynder
13. januar 2006 - 13:08 #2
hvis jeg holder filen åben.. Hvordan er det så nu lige jeg læser det næste tal?
Avatar billede arne_v Ekspert
13. januar 2006 - 13:12 #3
hvis du holde filen åben så vil næste løsning læse næste tal helt automatisk
Avatar billede anders_stigaard Nybegynder
13. januar 2006 - 13:40 #4
hvis jeg kører koden oven over i en While(1) uden in.close();.. så skriver den 30 ud hele tiden.. som er det første tal!!
Avatar billede arne_v Ekspert
13. januar 2006 - 13:48 #5
ifstream in("vind.txt");
for(int i = 0; i < 10; i++) {
  in >> Vind_k;
  cout << Vind_k << endl;
}
in.close();

udskriver det første tal 10 gange ?
Avatar billede anders_stigaard Nybegynder
16. januar 2006 - 13:12 #6
Ja du har ret... Men jeg tror løsningen er at smide det over i et array. Gider du skrive en simpel måde at gører dette på.. Så for du dine 60 point..!
Avatar billede bertelbrander Novice
17. januar 2006 - 01:29 #7
En lille kode der:
1: Åbner vind.txt, læser op til 10 tal
2: Indsætter 123123 på plads 5
3: Skriver op til 10 tal tilbage til vind.txt:

#include <iostream>
#include <vector>
#include <fstream>

int main()
{
  std::vector<int> MyVector;
  std::ifstream In("vind.txt");
  int i, t;
  for(i = 0; i < 10 && In >> t; i++)
      MyVector.push_back(t);
  In.close();

  MyVector.insert(MyVector.begin() + 5, 123123);

  std::ofstream Out("vind.txt");
  for(i = 0; i < 10 && i < MyVector.size(); i++)
      Out << MyVector[i] << std::endl;
  Out.close();
}
Avatar billede anders_stigaard Nybegynder
19. januar 2006 - 10:16 #8
bertelbrander --->

faktisk er det mere et svar på mit spørgsmål: http://www.eksperten.dk/spm/679988
Skal bruge det til to forskellige ting nemlig!

Men det du skriver der, skubber det ind.. Dvs at hvis jeg ændre plds 3 til 1, og efter følgenden den første plads til 1.. Så står 1 tallet fra før nu på plads 4.. Med plads mener jeg:

0  <-- plads 1
1  <-- plads 2 osv.
0
0
Avatar billede bertelbrander Novice
19. januar 2006 - 20:04 #9
Hvis du vil ændre "plads" 3 til 5 skriver du bare:

MyVector[2] = 5;

Så overskriver den det der måtte stå på denne plads, det forudsætter dog at der findes en plads 3, ellers går det galt.
Avatar billede anders_stigaard Nybegynder
21. januar 2006 - 18:46 #10
oki! Prøver jeg lige! bliver dog nok først mandag..
Avatar billede anders_stigaard Nybegynder
24. januar 2006 - 12:13 #11
bertelbrander -> Jeg har problemer med at kompile koden i linux.. Ser ud som om det er "vector-ting" den brokker sig over..

Lav et svar der: www.eksperten.dk/spm/679988 .. Hvis du vil have dine points..
Avatar billede anders_stigaard Nybegynder
24. januar 2006 - 12:26 #12
hmm! jeg må ha glemt at import <vektor>.. Det virker i hvert fald nu! Også i Linux!
Avatar billede anders_stigaard Nybegynder
27. januar 2006 - 11:01 #13
BertelBrander.. Smider du et svar i www.eksperten.dk/spm/679988 ?! Ellers bare gør det her!
Avatar billede bertelbrander Novice
27. januar 2006 - 20:50 #14
Jeg samler ikke på point.
Avatar billede anders_stigaard Nybegynder
07. februar 2006 - 15:13 #15
oki! men 1000 tak!
Avatar billede bertelbrander Novice
08. februar 2006 - 01:40 #16
Anders, lave selv et svar og accepter det, så får du dine point tilbage og spørgsmålet bliver lukket.
Avatar billede anders_stigaard Nybegynder
08. februar 2006 - 09:37 #17
ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester