std::string ws2s(const std::wstring& ws)
{
std::string curLocale = setlocale(LC_ALL, NULL);
setlocale(LC_ALL, "chs");
const wchar_t* _Source = ws.c_str();
size_t _Dsize = 2 * ws.size() + 1;
char *_Dest = new char[_Dsize];
memset(_Dest, 0, _Dsize);
wcstombs(_Dest, _Source, _Dsize);
std::string result = _Dest;
delete[]_Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}
bool read(const char* fileName)
{
ifstream fin;
fin.open(fileName, ios::binary);
if(!fin.is_open())
{
cout << "open data file failed." << endl;
return false;
}
size_t index = 2;
wstring wstrLine;
int lineIndex = 0;
while (!fin.eof())
{
fin.seekg(index, ios::beg);
wchar_t wch;
fin.read((char *)(&wch), 2);
if (wch == 0x000D)
{
string strLineAnsi = ws2s(wstrLine);
wstrLine.erase(0, wstrLine.size() + 1);
lineIndex++;
index += 4;
}
else
{
wstrLine.append(1, wch);
index += 2;
}
}
return true;
}