я написал два экземпляра СК1, СК2 из структуры по имени Куки и сохранили их в двоичный файл с именем «mydat», вызвав функцию:Как читать несколько структур из бинарного файла
bool s_cookie(Cookie myck,std::string fname) {
std::ofstream ofs(fname,std::ios::binary | std::ios::app);
if(!ofs) return false;
ofs.write((char *) &myck, sizeof(Cookie));
ofs.close();
return true;
}
из Конечно, myck может быть ck1, ck2 и т. д., а fname повторяет двоичный файл mydat. Таким образом, две структуры были сохранены в одном файле. Теперь я хочу прочитать их обратно в ck3 и ck4 соответственно. Как мне это сделать? Cookie выглядит следующим образом:
struct Cookie {
std::string name;
std::string value;
unsigned short duration;
bool expired;
};
Благодаря
Можете ли вы дать определение 'Cookie'? Это просто структура POD? –
только что добавили его в edit check it out –
В этом проблема. Вы не можете сохранить такую структуру в файл с помощью двоичного ввода-вывода. Двоичный ввод-вывод не работает в std :: string. Причина в том, что std :: string содержит внутренние указатели, а указатели не могут быть значимо сохранены в файле. Таким образом, вам не повезло, вам придется попробовать другой путь. Обычный способ сохранения строки с использованием двоичного ввода-вывода - это сначала сохранить длину строки, а затем сохранить сами символы. Затем при чтении вы делаете то же самое, читаете длину строки, выделяете память для символов, читаете символы. – john