Hi,
ich hoffe mir kann jemand helfen. Habe eine Datei vorliegen, woraus ich
Daten heraus parsen muss. Die Datei ist Utf16 little endian kodiert, wie
man am angehangenden Bild erkennen kann.
Allerdings kriege ich es nicht hin, die Zeilen zu parsen. Beim ersten
auftauchen einer Null, schneidet meine Funktion den String ab.
Vielleicht hat ja von euch jemand mal sowas gemacht.
Vielen Dank im voraus.
1 | std::wifstream wfile;
|
2 | wfile.open(path.c_str(), std::ios_base::binary | std::ios_base::in);
|
3 | if(wfile.is_open())
|
4 | {
|
5 | std::wstring wstr;
|
6 | getline(wfile, wstr);
|
7 | while(wfile.good())
|
8 | {
|
9 | csvlines.pushback(WString2String(wstr);
|
10 | getline(wfile, wstr);
|
11 | }
|
12 | wfile.close();
|
13 | }
|
14 |
|
15 |
|
16 | std::string MyClass::WString2String(std::wstring& s)
|
17 | {
|
18 | int slength = (int)s.length() + 1;
|
19 | int len = WideCharToMultiByte(CP_ACP, 0, s.c_str(),
|
20 | slength, 0, 0, 0, 0);
|
21 | std::string r(len, '\0');
|
22 | WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, &r[0], len, 0, 0);
|
23 | return r;
|
24 | }
|