Всем привет. Может я туплю, но почему-то проблема со строками и чтением их из файла.
Вот код записи в файл:
SetCurrentDirectory(_rootDir.c_str());
_metaFile.open(_metaFileName.c_str(), ios::binary | ios::app | ios::out);
_metaFile.write((char *) record_, sizeof(cCachedFile));
_metaFile.close();
Все данные на момент записи в переменной record_ соответствуют истине. Класс cCachedFile выглядит так (по сути это не более чем структура):
class cCachedFile
{
public:
string url;
string fileName;
string pathToFile;
UINT entryID;
UINT sessionID;
ULONGLONG fileSize;
BOOL wasDownloaded;
};
Чтение из файла идет таким образом:
if (FileExists(_metaFileName.c_str()))
{
_metaFile.open(_metaFileName.c_str(), ios::binary | ios::in | ios::app);
_metaFile.seekg(ios_base::beg);
while (! _metaFile.eof())
{
cCachedFile * fl = new cCachedFile();
_metaFile.read((char *) fl, sizeof(cCachedFile));
if (_metaFile.gcount() == 0)
break;
else
_listFiles.push_back(fl);
}
}
Скажите, пожалуйста, что тут не так, ибо когда файл считан в vector, то поля url и pathToFile содержат мусор, тогда как все все остальные (включая fileName) содержат именно то, что должны.