1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Запись/чтение структур (файлы) + разница между FILE * и <fstream>26.07.2013, 13:02. Показов 3662. Ответов 5
Всем привет. Порыскал по форуму, погуглил... Решения есть, но они не ясны (что, почему да как) и не все работают. Однако, я так и не нашёл конкретных и ясных объяснений по-этому поводу. И т.к. в С++ я пока конкретный чайник (и видать ещё надолго), буду очень признателен если кто-либо сможет объяснить Коболисту всю эту канитель на пальцах...
И так, к делу! Первое, что я так и не понял: возможно ли записать структуру в файл напрямик (прямо структуру а не её поля по-отдельности)? На пример что-либо в стиле:
Нашёл такой вариант:
Нашёл ещё один вариант:
Помимо всего этого, я так и нигде не нашёл разницу использования библиотеки <fstream> и объекта FILE. Предполагаю (хоть и может несу чушь), что FILE - это чисто Си, а <fstream> - это уже "тунинг" в С++. Правильно ли это? И потом, когда используется один вариант а когда второй? Есть ли разница в performance между этими 2-мя способами работы с файлами? Или методы из <fstream> базируется (наследуют) всё те-же методы используемые с FILE? Заранее спасибо за ответы. П.С. Начав изучение С++ (совсем недавно) я на собственной шкуре понял, чем и насколько COBOL на самом деле лучше в работе со строками, массивами, структурами и файлами...
0
|
26.07.2013, 13:02 | |
Ответы с готовыми решениями:
5
Файлы FILE и fstream fstream не работает и чтение и запись Класс, производный от fstream, чтение и запись Запись/чтение структуры через fstream |
Каратель
|
|
26.07.2013, 13:57 | 2 |
нет, в файл записываются поля структуры
Добавлено через 1 минуту а откуда ему знать какой размер у строки? Добавлено через 39 секунд правильно кола или пепси, книга или фильм? разница может быть, а может и не быть. зависит от реализации
2
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
26.07.2013, 14:20 [ТС] | 4 |
Jupiter, спасибо за ответ.
Значит если я правильно понял, при записи я должен указать длинну String, или использовать char. Соответственно при чтении, надо указать длинну String, а в случае с char она и так указана в обявлении?! Croessmah, разницу "знать" на моём чайниковом уровне естественно я никак не могу. На данный момент оперирую базовой инфой, что printf/scanf используется с файлами а cout/cin для ввода/вывода в консоль. На счёт "зелёности" - вообще ничего не понял. Было бы хорошо если б Вы, любезно взявшись объяснить мне что-либо, делали это как с дальтоником. Ибо я изначально признался, что именно таковым и являюсь в данном языке программирования.
0
|
Каратель
|
|
26.07.2013, 14:55 | 5 |
В общем случае да, но с String/UnicodeString могут быть свои тонкости, лучше сразу спросите в разделе билдера. Наверняка там есть более удобные средства сериализации String/UnicodeString
1
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
26.07.2013, 16:21 [ТС] | 6 |
Выходит использовать тип char array (типа: char my_field[50]) Вы не советуете, предполагаю - из за сравнительной сложности организации простого присваивания некой строки символов (нужны спец функции и/или циклы)?!
Задам вопрос в указанном Вами разделе. Благодарю за помощь!
0
|
26.07.2013, 16:21 | |
26.07.2013, 16:21 | |
Помогаю со студенческими работами здесь
6
Разница между массивом структур и очередью Запись и чтение структур данных Clipboard (запись/чтение) массива структур Запись/чтение массива структур в бинарный файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |