Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C++ Dateien einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.11.2015, 09:42 Uhr
JLEITNER



Ich schreibe ein Programm, bei dem eine Datei eingelesen werden soll. Wenn die einzulesende Datei noch nicht existiert, soll ein diesbezüglicher Hinweis aufscheinen, sodass der Nutzer die entsprechende Datei erstellen bzw. an die richtige Stelle kopieren kann und das Programm dann fortgesetzt wird.

Zur Zeit sieht der relevante Teil meines Quellcodes so aus:

C++:
              cout<<"Warte auf "<<mitzaehler<<".txt!"<<endl;
              system("PAUSE");
              ostringstream iss;
              iss << mitzaehler;
              string dateiname;
              dateiname = iss.str() + ".txt";
              ifstream quelldatei;
              quelldatei.open(dateiname.c_str());
              while (quelldatei.fail())
              {
                    cout<<"Warte auf "<<mitzaehler<<".txt!"<<endl;
                    system("PAUSE");
                    quelldatei.open(dateiname.c_str());

              }


Dabei ist die Variable mitzaehler vom Typ int. Wenn die einzulesende Datei von Anfang vorhanden ist, funktioniert alles einwandfrei. Ist dies aber nicht der Fall, so bleibe ich immer in der while-Schleife hängen, selbst wenn die ich die einzulesende Datei mittlerweile eingefügt/erstellt habe und damit meiner Meinung nach quelldatei.fail() nicht mehr erfüllt sein sollte. Weiß jemand eine - am besten möglichst einfache Lösung - um das Gewünschte zu realisieren, sodass man solange ein Hinweis erscheint, bis die gewünschte Datei vorhanden ist und diese dann eingelesen wird.

Vielen Dank für etwaige Antworten!
Johannes Leitner

-----
Edit: cpp-Tags eingefügt.

Dieser Post wurde am 12.11.2015 um 23:32 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.11.2015, 09:57 Uhr
ao

(Operator)


Vielleicht musst du die Datei auch wieder schließen. Also ein quelldatei.close() zwischen dem while und dem cout.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.11.2015, 13:02 Uhr
JLEITNER



Danke für den Hinweis; aber leider hat es dennoch nicht funktioniert. Mittlerweile habe ich aber selbst die Lösung herausgefunden, wenngleich diese nicht besonders elegant ist. Für mich ist lediglich relevant, dass es jetzt funktioniert:

C++:
      ifstream quelldatei;              
      while (0 < 1)
      {
            ifstream quelldatei2;
            quelldatei2.open(dateiname.c_str());
            if (quelldatei2.good())
            {
               break;
            }
            else
            {
               cout<<"Warte auf "<<mitzaehler<<".txt!"<<endl;
               system("PAUSE");
            }
      }
      quelldatei.open(dateiname.c_str());



-----
Edit: cpp-Tags eingefügt.

Dieser Post wurde am 12.11.2015 um 23:34 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: