000
14.12.2008, 10:05 Uhr
Pler
Einer von Vielen (Operator)
|
Guten Morgen. Ich möchte eine Datei einlesen, deren Namen ich als wstring bekomme. Scheint unter Linux nicht möglich zu sein. Unter Windows gehts. Ich habe gelesen, daß der Konstruktor von ifstream nicht im Standard ist und deher Implementierungsabhängig ist.
Daher die Frage, wie könnte ich das umgeben?
Der String ist übrigens wstring, da "oben" mit Qt gearbeitet wird. Und aus einem QString bekommt man nur (1) einen stdString, was eventuell Informationsverlust bedeutet oder (2) wstring.
Ich habe hier versucht das Ganze auf ein kleines Beispiel zu vereinfachen: (kompiliert unter Windows, nicht unter Linux)
C++: |
#include <fstream> #include <string> #include <iostream> using namespace std;
int funktion(wstring filename) { wifstream in(filename.c_str()); wstring str; while(getline(in,str)) { cout << str << endl; } return 0; }
int main(int argc, char * argv[]) { return 0; }
|
g++ versuch.cpp -o versuch: |
versuch.cpp: In function ‘int funktion(std::wstring)’: versuch.cpp:8: error: no matching function for call to ‘std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::basic_ifstream(std::wstring&)’ /usr/include/c++/4.3/fstream:442: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = wchar_t, _Traits = std::char_traits<wchar_t>] /usr/include/c++/4.3/fstream:428: note: std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = wchar_t, _Traits = std::char_traits<wchar_t>] /usr/include/c++/4.3/iosfwd:86: note: std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >::basic_ifstream(const std::basic_ifstream<wchar_t, std::char_traits<wchar_t> >&)
|
Dieser Post wurde am 14.12.2008 um 10:12 Uhr von Pler editiert. |