Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661

Строки конечной длины в полях структуры. Файловое чтение-запись

12.06.2014, 09:14. Показов 3691. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переделываю под QT еще Дельфевый вариант программы хранящей данные в т.н. типизированном файле
(т.е. однотипные записи, должны читаться в массив структур).
Так вот как создать структуру-то эту?
Если в обычном С, С++
C++
1
2
3
4
5
6
7
8
9
10
#include <string.h>
...
struct TComp {
  int tip;//тип 0-настольн,1-ноутбук,2-нетбук,3-КПК,4-смартфон,5-планшетн
  string Marka[40];//модель
  string  Pr[30];//процессор
  int Vop;//объем ОП
  int Vgd;//объем ЖД
  int Price; //цена
            };
то в QT он не находит #include <string.h>. Правда там есть тип QString
и так проходит
C++ (Qt)
1
2
3
4
5
6
7
8
struct TComp {
  int tip;//тип 0-настольн,1-ноутбук,2-нетбук,3-КПК,4-смартфон,5-планшетн
  QString Marka;
  QString Pr;
  int Vop;//объем ОП
  int Vgd;//объем ЖД
  int Price; //цена
            };
однако возникают сразу проблемы с чтением.
Читать видимо в стиле QT надо в моем случае в потоке QDataStream или QTextStream
т.е. вообще не получается "типизированного файла" как в Паскале.
Как правильно написать файловое чтение и запись полей такой структуры (в каждой строке файла-экземпляр такой структуры)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2014, 09:14
Ответы с готовыми решениями:

Файловое чтение и запись данных для решения СЛАУ
Добрый день, данная программа решает СЛАУ методом Гаусса, но каждый раз, при новом запуске программы, матрица коэффициентов и вектор...

Чтение/запись структуры
Всем привет! Есть файл, в который записана структура. По сути это дерево и соответственно в каждом узле есть поле типа самого узла. Вот как...

Чтение/запись структуры
День добрый! Помогите пожалуйста решить задачу: Сформировать текстовый файл, имеющий следующую структуру: фамилия, адрес, марка автомобиля,...

23
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
16.06.2014, 17:56  [ТС]
Студворк — интернет-сервис помощи студентам
так весь смысл этого чтения, как сами понимаете в том чтобы читалось заданное число символов с нужного места не взирая на пробелы. т.е когда поля структуры числовые - пробелы-разделители а когда текстовые - ни-ни!!!
Конечно в таких случаях в обычном C и Delphi пользуются двоичными файлами.
Но как известно, они не просматриваются правильно скажем через блокнот. Я хотел соединить и просматриваемость
и правильное чтение. Это вообще возможно?

Добавлено через 11 минут
Между прочим -вопрос относится к задаче пр прогр.студентов МВТУ. Вот полный текст
оздание программной системы
В сведениях о компьютерах представлены следующие характеристики: тип микропроцессора,
объем памяти, объем винчестера, цена.Данные должны загружаться в список
Программа должна в интерактивном режиме воспринимать каждый из перечисленных
запросов и давать на него ответ.
1. Определить характеристики компьютеров, цена которых не превышает данную.
2. Определить типы микропроцессоров и цены всех компьютеров с памятью не менее зад
объема.
3. Определить цены всех компьютеров с данным типом микропроцессора, обладающих
одновременно памятью и винчестерами не менее заданных объемов.
4. Построить график зависимости стоимости компьютера от объема памяти.
--------------------------------------------------------------
Мой комментарий. Само-собой сведения о компьютерах должны храниться в файле.
Не базе данных же - это было бы слишком круто для студентов
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
16.06.2014, 18:17
Цитата Сообщение от eugrita Посмотреть сообщение
так весь смысл этого чтения, как сами понимаете в том чтобы читалось заданное число символов с нужного места не взирая на пробелы. т.е когда поля структуры числовые - пробелы-разделители а когда текстовые - ни-ни!!!
Конечно в таких случаях в обычном C и Delphi пользуются двоичными файлами.
Но как известно, они не просматриваются правильно скажем через блокнот. Я хотел соединить и просматриваемость
и правильное чтение. Это вообще возможно?
Если поля структур не могут содержать пробелы, то проблем нет - стандартный поток читает строку до пробела или конца строки. Если поля структур могут содержать пробелы, то нужно вводить разделитель полей - символ который в тексте поля встречаться не может, к примеру точку с запятой. Получится текстовый файл с записями переменной длины, поля которой разделены пробелом или каким-то другим символом. Разбирается не многим сложнее бинарного файла.

Бинарный файл будет содержать записи фиксированной длины, размер записи соответствует размеру структуры. Но при этом нужно убедиться, что этот размер будет одинаковым на всех поддерживаемых платформах. Указатель к примеру имеет разный размер на 32 и 64 битных платформах. И текстовым редактором бинарный файл не просматривается.

Можно совместить - писать в текстовый файл содержимое структуры в поля фиксированного размера, конвертируя числовые значения в строки. Но ИМХО - овчинка выделки не стоит, хотя в чисто учебных целях поупражняться можно.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
16.06.2014, 23:28
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Тогда нужно делать сериализацию структуры в поток.
Всё ближе и ближе к моему коду...
Только операторы спутали:
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
operator <<
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
in >>w.Marka;
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
17.06.2014, 04:22
Цитата Сообщение от nord_v Посмотреть сообщение
Только операторы спутали:
Это цитата, код не мой. И формат файла сериализатора Qt видимо таки под условия не подходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2014, 04:22

Запись в файл структуры подобной TList переменной длины
День добрый. Вопрос собственно вот в чем: Есть переменная типа списка (TList). я хочу ее сохранять в файл... Write(f, myvar). Где...

Запись и чтение структуры в/из файла
Столкнулся с очередной проблемой. Есть несколько участков кода: Структура &quot;Абонент&quot;: struct Subscriber { char...

Запись и чтение структуры с файла
Привет всем.Столкнулся с проблема записи структуры в файл и чтения ее из файла.Вот сама структура: struct papa { ...

Запись/чтение структуры в файл
есть структура: struct OBYEKT { std::string neym; int nomer; }; std::vector &lt;OBYEKT&gt; spisok_obyektov;//вектор с объектами ...

Запись структуры и её чтение из файла
пробовал разными способами, ничего не работает, не записывает и не считывает ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru