zu öffnenden Dateipfad aus einer Textdatei lesen!



  • Hallo,

    ich habe ein kleines Problem. Ich habe ein Programm geschrieben, dass eine bestimmte Textdatei öffnet und in dieser bestimmte Zeichen durch andere ersetzt. Das Programm funktioniert auch bestens.
    Jetzt soll jedoch der Dateiname der zu bearbeitenden Datei jedoch aus einer anderen Datei mit dem Namen "Dateiname.txt" eingelesen werden. An dieser Stelle hänge ich zur Zeit etwas.
    Ich stelle mal den Auschnitt des Programms hier rein, in dem es um das oben beschriebene Problem geht.

    kann mir jemand weiterhelfen?

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cstring>

    using namespace std;

    int main() {

    int length;
    char * buffer;

    char str[30];

    ifstream daten("Dateiname.txt");

    daten.seekg (0, ios::end);

    length = daten.tellg();

    daten.seekg(0, ios::beg);

    buffer = new char[length];

    daten.read(buffer, length);

    daten.close();

    cout.write(buffer, length);

    ifstream lesen;

    // hier soll nun der Pfad, der in der Datei
    // "Dateiname.txt" ausgelesen wurde geöffnet werden

    lesen.open(buffer, ios_base::in);

    if (lesen.good()) {
    cout <<" alles ok!";
    }

    lesen.close();

    system("Pause");

    delete[] buffer;

    system("Pause");

    }



  • Nochmal kürzer erklärt:

    Ich habe eine Textdatei: "Dateiname.txt"

    In dieser Datei steht ein Pfad. Z.B.: C:\\Hallo.txt

    Der Pfad aus der Datei Dateiname.txt soll nun eingelesen werden und die Datei C:\\Hallo.txt soll geöffnet werden


  • Administrator

    1. Bitte cpp Tags verwenden.
    2. Es fehlt eine sinnvolle Problembeschreibung, also woran du scheiterst.
    3. std::string hilft: http://www.cplusplus.com/reference/string/string/
    4. Dann kann man std::getline verwenden: http://www.cplusplus.com/reference/string/getline/

    (3. und 4. sind nur Hilfestellungen um deinen Code zu vereinfachen)

    Grüssli



  • zkzk schrieb:

    ... In dieser Datei steht ein Pfad. Z.B.: C:\\Hallo.txt

    korrekt wäre wahrscheinlich: C:\Hallo.txt oder C:/Hallo.txt
    Aus der Datei werden alle Zeichen als Zeichen gelesen. Das '\' brauchst man bei Literalen im Source Code.

    Dein Code etwas entschlackt:

    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main() 
    {
        string pfad;
        {
            ifstream daten("Dateiname.txt");
            if( !(daten >> pfad) )
            {
                cerr << "Fehler beim Lesen des Pfads aus 'Dateiname.txt'" << endl;
                return -1;
            }
        }
        cout << "Pfad: " << pfad << endl;
    
        // hier soll nun der Pfad, der in der Datei
        // "Dateiname.txt" ausgelesen wurde geöffnet werden
        ifstream lesen( pfad.c_str() );
        if( lesen.is_open() ) 
        {
            cout << " alles ok! Datei zum Lesen geoeffnet" << endl;
        }
    
        cin.get();
        return 0;
    }
    

    Ich unterstelle dabei, dass Pfad und Dateiname ein String ohne 'Whitespace Character' (z.B. Leerzeichen) ist.

    Gruß
    Werner



  • Vielen Dank!!

    Funktioniert wunderbar.


Anmelden zum Antworten