(C++) Fehler bei ifstream.open() - WIe erkennen ?
-
Guten Abend,
ich bekomme beim Versuch eine ifstream zu öffnen NULL zurück ( unter Linux) .
Ich würde nun gern wissen, was der Fehler ist. DIe Datei ist vorhanden, und "rw"Hanns
-
Hallo,
also irgendwas scheinst du hier ganz böse durcheinander zu würfeln.ich bekomme beim Versuch eine ifstream zu öffnen
Das riecht stark nach std::ifstream. Das wäre allerdings C++ und kein C. Und außerdem liefert die Methode open weder einen Wert, noch kann ein ifstream "rw" geöffnet werden.
Was genau meinst du also?
Vielleicht doch eher fopen?
Poste doch einfach mal ein kleines Beispiel, das dein Problem verdeutlicht.
-
Original erstellt von ^Hanns:
**Guten Abend,
ich bekomme beim Versuch eine ifstream zu öffnen NULL zurück ( unter Linux) .
Ich würde nun gern wissen, was der Fehler ist. DIe Datei ist vorhanden, und "rw"Hanns**
1.) Falsches Forum. Du programmierst C++ und nicht ANSI C
2.) std::ifstream.open() hat keinen Rückgabewert:
void open ( const char * filename, openmode mode = in );
Nachzulesen auf http://www.cplusplus.com/ref/iostream/ifstream/open.html
#include <iostream> // std::cout, std::endl #include <fstream> // std::ifstream #include <string> // std::string #include <cassert> // std::assert int main(int argc, char** argv) { std::ifstream datei; std::string zeile; datei.open( "main.cpp" ); std::assert( datei.good() ); datei.seekg( 0, std::ios::beg ); while( ! datei.eof() ) { getline( datei, zeile ); std::cout << zeile << std::endl; } datei.close(); return 0; };
-
HM, gehört wdoch nach c++, hab nicht gemerkt, daß ich das falsche Forum erwischt habe:
Hier der Code -Auszug:
// aus der .hh ifstream dataStream; // Kanal für Daten ifstream indexStream; // dto für Index ifstream memoStream; // für die MemoFelder
//aus der .cc /************************************************* ** Datenbank öffnen * **************************************************/ bool dBase::open(){ indexOrd = 0; // kein Index gesetzt indexCount = 0 ; // kein Index erfasst dataStream.open( dataFile,ios::binary); if ( ! dataStream ) return false; readDataHeader(); // erste DBF.Seite lesen readFieldInfo(); // und die Feldbeschreibungen indexStack.resize (5); // Stack war bis dato nur deklariert stackPointer = -1; // zeiger aufs erste element: _eof = false; _bof = false; _found = false; recordOffset = 0; if(withMemo) openMemo(dataFile); #ifdef _DB_DEBUG_ showDataHeader(); cerr << "datastream = " << dataStream << endl; cerr << "dataFile = " << dataFile << " return von open" << endl; #endif return true; }
-Ich benötige in insgesamt 5 Klassen je einen dataStream ( und bei manchen auch einen memoStream)
- DIe ARCHIV-Datei ist die vierte, die geöffnet werden soll.
- Alle Dateien sind vorhanden
- der Pfad ist korrekt
- Groß/Kleinschreibung ist beachtet (linux)
- Die Datei ist vorhanden, und hat Daten ( ca 76 MB )
- SIe ist von keinem anderen Nutzer gesperrt
- sie kann gelesen und geschrieben werden ( ich weiß, daß write hier nicht relevant ist )SO , nun fällt mir nichts weiter ein, was dem Öffnen eines inputstreames ncoh entgegestehen könnte. Und das ist mein Problem
Hanns