Datum:
Angehängte Dateien: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.
std::wifstream wfile; wfile.open(path.c_str(), std::ios_base::binary | std::ios_base::in); if(wfile.is_open()) { std::wstring wstr; getline(wfile, wstr); while(wfile.good()) { csvlines.pushback(WString2String(wstr); getline(wfile, wstr); } wfile.close(); } std::string MyClass::WString2String(std::wstring& s) { int slength = (int)s.length() + 1; int len = WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, 0, 0, 0, 0); std::string r(len, '\0'); WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, &r[0], len, 0, 0); return r; } |
Datum:
Danke für den Link Arc. Ich habe trotzdem nicht hinbekommen, wie dort beschrieben. Aber um den Thread nicht Lösungsfrei zu lassen. Ich habe QT4.6.2 eingebunden und es dann so gelöst:
QStringList list; QFile file(QString::fromStdString(path)); file.open(QFile::ReadWrite); QTextStream stream(&file); stream.setCodec("UTF-16LE"); QString str = stream.readLine(); while(!str.isEmpty()) { list.push_back(str); str = stream.readLine(); } |
Gruß
