Dateihandle erstellen



  • Hi @ comm,

    ich ein Programm welches aus einer Datei zeilenweise Werte ausliest und eine Funktion mit Parametern aufruft ...

    ...
    int getSumme(std::string Name,std::string Dateiname) {
    ...
    
    f.open(Dateiname, ios::in);
    // Datei enthält nur Werte vom Typ double ...
    
    while ( !f.eof() ) {
    ...
    }
    
    f.close();
    ...
    }
    
    int main() {
    ...
    std::string Name,
                Dateiname;
    ...
    
    f.open("datei.txt", ios::in);
    
    while ( !f.eof() ) {
    f >> Name >> Dateiname;
    getSumme(Name,Dateiname);
    }
    
    f.close();
    ...
    }
    

    Die Funktion benutzt den übergebenen Parameter als Dateiname zum Erstellen eines
    Dateihandles ...

    Problem:
    Datei in Funktion getSumme() wird nicht geöffnet ...
    Argument vom Datentyp string oder char / char* wird erwartet ... (???)

    Frage:
    Wie wird ein parametrisierter Dateihandle erstellt bei den der Dateiname als
    Argument - vom Datenstyp std::string - übergeben wird?

    Werte vom Datentyp char* können nicht eingelesen - und somit - übergeben werden.
    Eine vorangegange Frage von mir wurde beantwortet, Dank an CStoll.

    Danke.



  • std::string a = "blabla.txt"
    ifstream in;
    in.open(a.c_str(), std::ios_base::in);



  • Die Lösung ist so einfach wie überaschend: c_str():

    int getSumme(std::string Name,std::string Dateiname) {
    ...
    
    f.open(Dateiname.c_str()/*<< hier */, ios::in);
    // Datei enthält nur Werte vom Typ double ...
    
    while ( !f.eof() ) {
    ...
    }
    
    f.close();
    ...
    }
    

    (die fstream-Bibliothek wurd unabhängig von std::string entwickelt, deswegen arbeitet sie noch mit char*'s (afaik soll es in der nächsten ANSI-Version möglich sein, string's direkt zu verwenden))



  • Danke für den Tipp,
    das Programm macht jetzt das was es soll ...


Anmelden zum Antworten