Avatar billede akilleuz Nybegynder
14. november 2006 - 17:13 Der er 5 kommentarer og
2 løsninger

problem med læsning af string

Hej

jeg skal lave et funktion hvor jeg kan læse og skrive en værdi fra en txt fil. Den værdi som er i filen skal så kunne retuneres.

jeg har fundet ud af at gemme værdier og læse vædier fra en txt men mit problemer at få dem lavet om til en int eller double der kan retuneres, jeg får en underlig fejl.

Her er min kode:

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;

int main ()
{
  int p;
  string line;
  ifstream myfile ("1.txt");
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }

  else cout << "Unable to open file";
 
  line = atoi("p");
  cout << p << endl;

  return 0;
}

Håber der er nogen der kan hjælpe.
Avatar billede arne_v Ekspert
14. november 2006 - 18:52 #1
getline (myfile,line);

saa indeholder line den laeste linie som std::string

saa skal du vel

int v:
v = atoi(line.c_str());

(eller maaske en af de andre maader at konvertere paa)
Avatar billede kenneth_gorking Nybegynder
14. november 2006 - 19:49 #2
ifstream har også en masse stream operatorer som kan bruges til at læse/skrive værdier fra/til filer. Du kan bruge '>>' operatoren direkte på ifstream objekter til at læse værdier fra filen, og '<<' til at skrive værdier til filen. Din kode kunne f.eks simplificeres til dette:

int main ()
{
  int p;
  ifstream myfile ("1.txt");
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      myfile >> p;        // Læs en 'int' fra filen og placer værdien i 'p'
      cout << p << endl;
    }
    myfile.close();
  }
  else cout << "Unable to open file";

  cout << p << endl;

  return 0;
}
Avatar billede akilleuz Nybegynder
14. november 2006 - 20:47 #3
Hej Arnde

Det virkede havde ellers selv prøvet det, menhavde ikke helt luret hvordan det virkede. men nu virker det. kan du ikke lavet et svar så du kan få point?
Avatar billede akilleuz Nybegynder
14. november 2006 - 20:49 #4
hej Kenneth

Jeg ved ikke men arne kom med hans svar først og nu virker min kode. Prøver dog lige din løsning af også. Vil i dele point eller er det okay arne for dem? For mig er det lige meget :-)
Avatar billede akilleuz Nybegynder
14. november 2006 - 20:54 #5
Kenneth det virkede sørme også :-)
Avatar billede arne_v Ekspert
14. november 2006 - 21:42 #6
det er vel helt fint at dele point for baade den rigtige maade at kalde atoi paa
og den rigtige maade at laese et tal ind paa

og svar fra mig
Avatar billede kenneth_gorking Nybegynder
14. november 2006 - 21:49 #7
Fint med mig :)
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