Структура со строками string и файловые чтение/запись массива таких структур
Комментарии отсортированы по убыванию даты, нажмите сюда, чтобы отсортировать их по возрастанию даты
Автор: Tekotakita IP: определён
Больше спасибо за гайд! Долго искал нечто подобное.
04.03.2024, 05:11
Автор: Nataly (запаролен) IP: определён
Спасибо за ответ! Пример понятен, но запись просто строк - это не проблема. Хотелось какой-то красивый вариант записи именно целиком структур, содержащих строки string. Понятно, что они имеют разный размер. Все равно, спасибо за ответ. Может быть потом что-нибудь придумаю.
18.03.2019, 09:18
Ответ: Класс string всё-таки удобнее для работы с текстовыми форматами файлов. Можно и с бинарными, но тогда везде проверяйте, что максимальная длина строки не превышена. Правда, в этом случае string превращается в аналог буфера char []
Бинарные файлы вообще обычно предполагают, что размеры всех записей одинаковы, для этого есть буфер char []. Можно работать и с бинарными записями переменной длины, но это сложнее и не слишком практично.
Всё равно не пойму, какая принципиальная разница между "просто строкой" и строкой-полем структуры. Ну предусмотрите в структуре дополнительное поле типа size_t, где будет храниться текущая длина строки, как я сделал в формате файла примера. Но, опять же, что мы тогда выигрываем против char [] ?
Автор: Nataly (запаролен) IP: определён
Как все-таки корректно записать в файл структуры с полями string?
16.03.2019, 21:11
Ответ: Добавил P.S. к статье
Автор: Nataly (запаролен) IP: определён
Мне очень нравится Ваш блог. Вопрос по последней программе. Она правильно выводит результаты из файла только сразу после ввода, поскольку в структуре записаны указатели на строки (размер структуры-32) и содержание выводится из памяти. Если выделить блок чтения из файла в отдельную программку, она ничего не прочитает, ведь в файле информации нет, есть только указатели, а зачем они нужны, если память уже стерта.
16.03.2019, 21:02
Ответ: Данные-то в файле будут, мы пишем не указатели, а строки (см. скриншот 16-ричного вида файла). Другое дело, что при чтении у нас не будет информации о длине именно поля string. В общем, добавил P.S. к статье