C++ и вывод в файл

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

C++ и вывод в файл

Сообщение Ariman » 27.03.2005 (Вс) 17:38

У меня проблемка с записью в файл в с++ возникла...
Я как-то этого особо раньше и не касался..
В общем, если у меня есть структура

Код: Выделить всё
struct
{
int a
char b[20];
double c;
};
и т.д. - то ее в файл записывает нормально.
А если мне надо записать массив? Или если длина строки изначально не известна(т.е. в структуре будет символьгый массив)?

Код: Выделить всё
struct
{
char *b;
}temp;
temp.b = new char[20];
strcpy(temp.b,"TESTTESTTESTTEST");

Такое уже не пройдет!
Как правильно организовать вывод подобных стректур(содержащих указатели) в файл?

А то у меня, вообще-то есть структура, которая содержит объекты класса string(чтобы не мучаться с перевыделением памяти под char*),
так она в файл неверно пишется.... И sizeof ее всегда один и тот-же определяется, не зависимо от длины строк в этих самых string'ах.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.03.2005 (Пн) 9:20

Первые четыре байта файла: количество структур.
Сразу вслед за ними: все эти структуры сплошняком. Писать их ручками, поэлементно.
Сразу вслед за структурами идут данные, на которые ссылаются структуры. Так же сплошняком. Разделитель, например, 0x00.

Естественно, при записи структур нужно ручками менять указатель на структуру в памяти на смещение в файле, по которому будут идти данные этой структуры.


Другой вариант: писать структуру в файл так: каждый char* заменять на пару unsigned int size; char buf[size].
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 28.03.2005 (Пн) 10:25

Еще вариант - написать DLL-ку на VB из которой сбросить эту структуру в файл тремя строчками. И вызывать ее из C++ :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 28.03.2005 (Пн) 12:05

Эх....... А я-то наделялся, что не придется "ручками" писать по-элементно..... Впрочем, я уже заменил string на фиксированной длиниы char[] - в данном случае этого хватит...........


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 101

    TopList  
cron