std::string и fstream
От: R1K0 Россия  
Дата: 02.09.09 07:18
Оценка: :))
Всем привет. Может я туплю, но почему-то проблема со строками и чтением их из файла.

Вот код записи в файл:

        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) содержат именно то, что должны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.