binärdatei probleme bei klassenmethode



  • mit meinem problem bin ich weitergekommen, nun habe ich ein neues problem, wo
    ich in der sackgasse bin, ich hoffe jemand kann mir helfen. Die folgende methode
    funktioniert:

    bool CFile::wBinFile(char *fName, float value[], int elements) {
        ofstream dat_out;
        dat_out.open(fName, ios::out|ios::binary);
        if (!dat_out) {
            cerr << "Datei konnte beim Schreiben nicht geöffnet werden!\n";
            return false;
        }
        else {
            dat_out.write((const char *) &value, sizeof(float) * elements);
            dat_out.close();
            return true;
        }
    }
    

    und habe ich folgenden code in main() probiert:

    void main() {
        CFile *IOFile = new CFile;
        float *header;
        char fileName[20];
        char fBuffer[20];
        int values;
    
        cout << "Enter the file name: ";
        cin >> fileName;
        cout << "Number of values: ";
        cin >> values;
        header = new float[values];
        for (int i=0; i<values; i++) {
            header[i] = i * i;
            cout << "value " << i << ": " << header[i] << endl;
        }
        IOFile->wBinFile(fBuffer, header, values);
        ifstream file_in;
        file_in.open(fBuffer, ios::in | ios::binary | ios::app);
        file_in.seekg(0, ios::end);
        unsigned long FileSize = streamoff(file_in.tellg());
            file_in.seekg(0, ios::beg);
        int elements = FileSize/sizeof(float);
        cout << "file size: " << FileSize << "\telements: " << elements << endl;
    
        for(i=0; i<values; i++) {
            file_in.read((char *) &header[i], sizeof(float));
        }
        file_in.close();
        for(i=0; i<values; i++) {
            cout << header[i] << "\t";
        }
    }
    

    dieser code funktioniert, nur wenn ich den code zum lesen von binär-datein in
    eine methode schreibe, wie oben geschrieben, dann kann file_in.open() die datei nicht öffnen.

    Komischerweise kann ich nur eine datei lesen wenn ich ios::app als argument
    mitübergebe. ????

    Noch ein kleines problem gibt’s noch, und zwar, der code um die anzahl der
    elemente zu bestimmen funktioniert auch nicht, kann es sein dass streamoff() nur
    bei den methoden getc() bzw. putc() funktioniert?

    Ich hoffe jemand kann mir weiterhelfen,
    danke
    mattias



  • es hätte auch gereicht wenn du in dein alten thread gepostet hättest

    dieser code funktioniert, nur wenn ich den code zum lesen von binär-datein in
    eine methode schreibe, wie oben geschrieben, dann kann file_in.open() die datei nicht öffnen.

    wo durch unterscheiden sich die codes?

    Komischerweise kann ich nur eine datei lesen wenn ich ios::app als argument
    mitübergebe. ????

    hmm irgend was leuft da schief

    Noch ein kleines problem gibt’s noch, und zwar, der code um die anzahl der
    elemente zu bestimmen funktioniert auch nicht, kann es sein dass streamoff() nur
    bei den methoden getc() bzw. putc() funktioniert?

    müsste ich auch mehr sehen


Anmelden zum Antworten