Problem mit ifstream()

Bertelcraft

Mitglied
Hallo!
Ich hab mir ein kleines Vokabellern-Programm geschrieben und nun möchte ich nicht für jede Lektion eine eigene Funktion schreiben, da sich diese nur im Pfad der Datei ändern. Ich habe mir überlegt, dass ich statt:
Code:
std::ifstream file_stream(test.txt);
den Dateipfad in einen String speichere und dann
Code:
string Test = "test.txt";
...
std::ifstream file_stream(Test)
so auslese. Jedoch funktioniert das nicht so, wie erwünscht. Genauer gesagt, ich kann es nicht einmal kompilieren.
Könnte mir jemand zeigen, wie ich das angesprochene Problem in den Griff bekomme?
MfG
Bertelcraft

P.S.: Ich verwende Dev-C++.
PP.S.: Ja, ich habe Google und die Formssuche ausgiebig benutzt. ;)
PPP.S.: Auf Wunsch post ich auch den kompletten Quelltext.
 
Zuletzt bearbeitet:
Erstmal danke für die raschen Antworten, aber auch wenn ich .c_str() an die Variable anhänge, stürzt das Programm ab, wenn die Datei geöffnet werden sollte.

EDIT: Folgende Header sind dabei:
#include <algorithm>
#include <vector>
#include <string>
#include <istream>
#include <sstream>
#include <iterator>
#include <fstream>
#include <iostream>
#include <ctime>
#include <cstdlib>
 

Anhänge

Zuletzt bearbeitet:
Hi.

Also ich hab dein Programm mal ausprobiert und bei mir stürzt es nicht ab.

Kompilier mal im Debugmodus und geh mit dem Debugger schrittweise durch das Programm. Wo und mit welcher Meldung stürzt es denn ab?

Gruß
 
Wenn ich 2-1-0 (Menüoptionen, also bei Latein Lektion 1) stürzt es bei dieser Zeile ab:
Code:
std::size_t pos = std::rand() % std::min<std::size_t>(questions.size(), answers.size());
 
Offensichtlich existiert eine der Dateien nicht (\edit: oder die Datei war leer bzw. es konnte nichts eingelesen werden) und du hast versucht durch 0 zu dividieren.

Du solltest immer prüfen ob die Datei auch geöffnet werden konnte (file_stream.is_open()).

Gruß
 
Zuletzt bearbeitet:
Zurück