Avatar billede sunep Nybegynder
22. januar 2004 - 14:30 Der er 6 kommentarer og
2 løsninger

læse fra fil bliver et sjovt tal

jeg har fundet ud af at få skrevet tallet 3 ned i en tekst fil og prøver så at læse tallet igen. men min cout skriver et andet tal (2293664)

Koden er følgende:


#include <iostream>
#include <fstream>

using namespace std;

int main() {

    int AntalReboots = 3;
    int Nummer;

    ifstream in;
    ofstream out;
   
    in.open("c:\\runner.txt");
    if (in.fail()) {
      out.open("c:\\runner.txt");
      out << AntalReboots;
      out.close();
      in.open("c:\\runner.txt");
    }

    in >> Nummer;
    in.close();
    cout << Nummer;

}
Avatar billede soreno Praktikant
22. januar 2004 - 14:56 #1
Muligvis du skal lukke in før du kan åbne den igen ?

Prøv:
if (in.fail()) {
      in.close();
      out.open("c:\\runner.txt");
      out << AntalReboots;
      out.close();
      in.open("c:\\runner.txt");
    }
Avatar billede sunep Nybegynder
22. januar 2004 - 14:58 #2
det hjælper ikke!!
Avatar billede soreno Praktikant
22. januar 2004 - 15:22 #3
Man kan tilsyneladende ikke genbruge ifstream objektet. Følgende virker:
#include <iostream>
#include <fstream>

using namespace std;

int main() {

    int AntalReboots = 3;
    int Nummer;

    ifstream *in  = new ifstream();
    ofstream out;
 
    in->open("runner.txt");
    if(in->fail())
    {
        cout << "in failed - creating file" << endl;
        in->close();

        out.open("runner.txt");
        out << AntalReboots;
        out.close();
       
        delete in;
        in = new ifstream();
        in->open("runner.txt");
        if(in->fail())
        {
            cout << "what???" << endl;
        }
    }
   
    cout << "in opened !" << endl;
    *in >> Nummer;
    cout << Nummer;
    delete in;

    return 0;   
}
Avatar billede arne_v Ekspert
22. januar 2004 - 15:43 #4
#include <iostream>
#include <fstream>

using namespace std;

int main() {

    int AntalReboots = 3;
    int Nummer;

    ifstream in;
    ofstream out;
   
    in.open("c:\\runner.txt");
    if (in.fail()) {
      in.close();
      in.clear(); // <---------
      out.open("c:\\runner.txt");
      out << AntalReboots << endl;
      out.close();
      in.open("c:\\runner.txt");
    }

    in >> Nummer;
    in.close();
    cout << Nummer << endl;

}

virker !
Avatar billede sunep Nybegynder
22. januar 2004 - 15:57 #5
Ahh tak begge to. jeg håber det er i orden i deler point
Avatar billede sunep Nybegynder
22. januar 2004 - 15:57 #6
hvis i gider svare
Avatar billede soreno Praktikant
22. januar 2004 - 15:58 #7
Ok.
Avatar billede arne_v Ekspert
22. januar 2004 - 16:01 #8
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