Название: QString Отправлено: merke от Сентябрь 29, 2009, 10:29 Всем привет! Я тут пишу лабку, мне нужно записать массив QString в бинарный файл и потом его так же считать. Задание не использовать QDataStream. Т.е. перед записи массива на диск я сам буду его размечать, а потом уже записывать, это всё делается для того чтобы потом можно было эти базы читать в любой среде программирвоания. Так вот беру создаю массив QString my[0] к примеру.
Привожу код: Код: QString my[0]; Аналогично считываю: Код: QString my[0]; Но при считывании получаю пустую строку. Пожалуйста, помогите, подскажите как мне обойти данную проблему. Далее как проблема будет решена я буду уже размечать массив и писать его на диск. Название: Re: QString Отправлено: ildar от Сентябрь 29, 2009, 10:44 как минимум:
пишешь и пытаешься читать только первые 4 байта Код: ... и при чтении указываешь не правильный режим Код: file.open(QIODevice::WriteOnly); самый простой вариант сохрянять каждый элемент массива на отдельной строке, в асситанте даже пример есть как читать текстовый файл по строкам: Код: QFile file("in.txt"); Название: Re: QString Отправлено: shadone от Сентябрь 29, 2009, 12:13 Всем привет! Я тут пишу лабку, мне нужно записать массив QString в бинарный файл и потом его так же считать. Задание не использовать QDataStream. Т.е. перед записи массива на диск я сам буду его размечать, а потом уже записывать, это всё делается для того чтобы потом можно было эти базы читать в любой среде программирвоания. Так вот беру создаю массив QString my[0] к примеру. wtf?Привожу код: Код: QString my[0]; Аналогично считываю: Код: QString my[0]; Но при считывании получаю пустую строку. Пожалуйста, помогите, подскажите как мне обойти данную проблему. Далее как проблема будет решена я буду уже размечать массив и писать его на диск. Зачем там массив QString нулевой длины? (насколько я помню, это фишка C, и в C++ не будет работать в некоторых компиляторах). по существу вопроса - читать/писать объекты таким образом нельзя! Так можно обращаться только с POD (Plain Old Data) типами, и то могут быть проблемы из-за выравнивания полей. Плюс QString кроме собственно строки содержит еще служебные данные (такие как reference count и т.п.). В данном случае надо описать свою структуру файла и заполнять ее вручную, взяв только содержимое строки QString - длину (QString::length) и данные (QString::utf16 или QString::unicode) |