Kompletten Inhalt einer Datei in einen std::wstring schreiben
-
Abend,
ich nehme wchar_t, weil meine Datei Umlaute enthält. Beispiel:
Häuser öffentlich überIm Moment lese ich die komplette Datei Zeichen für Zeichen aus.
#include <fstream> #include <string> using namespace std; int main() { wifstream file("test.txt",ios_base::binary); wstring wstr; for(wchar_t c; file>>noskipws>>c; wstr+=c); // ... }Das zeichenweise Auslesen gefällt mir nicht. Darum dachte ich, ich versuches mit einem
istream_iterator:#include <fstream> #include <string> #include <iterator> using namespace std; int main() { wifstream file("test.txt",ios_base::binary); istream_iterator<wchar_t> start(file); // Kein Konstruktor für wifstream }Allerdings fiel mir dann auf, dass es
istream_iterator wchar_tnich unterstützt bzw. es einen wistream_iterator nicht gibt. Gibt es denn eine Lösung, damit man alles in einem Rutsch einlesen kann?Danke im Voraus
-
istream_iteratorhat einen 2. Parameter für CharT des unterliegenden Streams. Also sollteistream_iterator<wchar_t, wchar_t>klappen.
-
ipsec schrieb:
istream_iteratorhat einen 2. Parameter für CharT des unterliegenden Streams. Also sollteistream_iterator<wchar_t, wchar_t>klappen.Ah, danke dir.

Und hier noch die Lösung für diejenigen, die vielleicht mal auf dasselbe Problem stoßen:
#include <fstream> #include <iterator> #include <string> int main() { std::wifstream file("test.txt",std::ios_base::binary); std::istream_iterator<wchar_t,wchar_t> begin(file>>std::noskipws); std::istream_iterator<wchar_t,wchar_t> end; std::wstring content(begin,end); }