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 ...