Hi
Ich hab ein kleines Problem, bei dem ich net weiterweiß:
ich habe eine Datei, die ich mit std::fstream öffne. Dann möchte ich diese
mit std::copy in einen Vector kopieren. Als iteratoren verwende ich std::istream_iterator.
Ohne UNICODE funktioniert das schon ganz gut, nur mit nicht.
Aber hier erstmal ein bischen code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#ifdef UNICODE
typedef wchar_t Char;
#else
typedef char Char;
#endif
// Buffer wo alles rein soll
std::Vector<Char> container;
std::basic_fstream<Char> file;
// jetzt die Datei öffnen
file.open( filename.c_str());
// Alles in den Buffer kopieren
std::copy( std::istream_iterator<Char>(file),
std::istream_iterator<Char>(),
std::back_inserter(container));
// Zum Schluss noch die Datei wieder schließen
file.close();
|
Beim Compilen mit UNICODE bekomme ich folgenden Fehler:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
error C2440: '<function-style-cast>' : cannot convert from 'std::basic_fstream<_Elem,_Traits>' to 'std::istream_iterator<_Ty>'
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
and
[
_Ty=Char
]
No constructor could take the source type, or constructor overload resolution was ambiguous
|
Wiso geht das ohne UNICODE aber mit nicht ? Und was muss ich ändern, damit es funktioniert ?