stream.read Problem
-
Hi, ich möchte eine Datei einlesen. Dazu habe ich folgenden Code:
std::vector<wchar_t> data; std::basic_ifstream<wchar_t> stream(fileName, std::ios::binary); stream.unsetf(std::ios::skipws); stream.seekg(0, std::ios::end); int size = stream.tellg(); stream.seekg(0, std::ios::beg); data.resize(size + 1); stream.read(&data.front(), static_cast<std::streamsize>(size)); stream.close(); data[size] = 0; data.push_back(L'\0');Das funktioniert. Jetzt möchte ich aber anstatt dem wchar_t meine eigenen Char-Klasse verwenden:
std::vector<Char> data; std::basic_ifstream<Char> stream(fileName, std::ios::binary); stream.unsetf(std::ios::skipws); stream.seekg(0, std::ios::end); int size = stream.tellg(); stream.seekg(0, std::ios::beg); data.resize(size + 1); stream.read(&data.front(), static_cast<std::streamsize>(size)); stream.close(); data[size] = 0; data.push_back(L'\0');was zur Folge hat, dass das Programm in der Zeile mit dem "stream.read" abstürzt. Die Char Klasse sieht so aus:
class Char { public: Char(); Char(const wchar_t& value); operator wchar_t() const; };Woran kann das liegen?
-
Dein Char hat überhaupt keinen Inhalt, nur Funktionen. Wo soll da etwas hingeschrieben werden?
-
Doch, habe ich nur vergessen mit rüber zu kopieren:
protected: wchar_t value;
-
Dann verheimliche uns bitte nicht alles. Wenn ich alles so ergänze wie ich es für richtig halte und so dass es compiliert, dann funktioniert es bei mir tadellos.
-
Ich will nichts verheimlichen, nur wollte ich das ganze übersichtlich halten.
Der Rest der Char Klasse schaut so aus:
Char::Char() : value(L'') { } Char::Char(const wchar_t& value) : value(value) { } Char::operator wchar_t() const { return value; }Also ganz trivial.