|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
||||||||||||||||
fstream не читает строки из файла!23.10.2009, 22:39. Показов 12537. Ответов 23
Метки нет (Все метки)
У меня Visual Studio 2008 использую язык С++
У меня есть определенный класс который мне нужно записать. (Класс кстати TStudent - листинг класса в конце) Вот код записи в файл:
И жить бы мне да радоваться - НО! Тут возникает потребность считать из файла, читаю я значит читаю класс, а он мне фигу ![]() Вот код чтения из файла:
Листинг класса:
0
|
||||||||||||||||
| 23.10.2009, 22:39 | |
|
Ответы с готовыми решениями:
23
Консоль не читает строки из текстового файла Написать программу, которая читает первые три символа из каждой строки текстового файла
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 23.10.2009, 23:25 | |
|
string содержит указатель на область памяти, в которой находится эта строка. Всё, что оказывается в файле, - это тот адрес (и прочее, но только не сама строка).
P.S. People - люди, народ. Великий студент наследует достояние целой нации!
1
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
||
| 23.10.2009, 23:34 [ТС] | ||
|
так вот в файле мое имя выглядет " [кракозябры] ихаил [дальше кракозябры]" и так несколько слов можно проглядеть. Добавлено через 3 минуты Народ состоит из людей в том числе и студенты и пенсионеры и продавцы и все остальные
0
|
||
|
|
|
| 23.10.2009, 23:37 | |
|
подсказали насчет строки правильно, а то что там будет находится - да что угодно, если хочешь таким образом что то корректно записывать в файл - не используй всяческих контейнеров, т.к. не известно где они в реальности свои данные хранят, плюс к этому ты читаешь из файла строку, а символ конца строки может встретится намного раньше, нежели длинна в байтах объекта.
1
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|||
| 24.10.2009, 00:13 [ТС] | |||
|
листинг файла в который произвожу запись
Добавлено через 1 минуту Функция getline читает в бинарном файле указанное количество символов либо читает строку в простом файле. Ну это на сколько я вычитал. Добавлено через 8 минут и кстати чем я пользуюсь getline или read не важно результат один и тот же...ну если думаете это из-за стрингов...ну посмотрю тогда в эту сторону сейчас...спасибо Добавлено через 25 минут
0
|
|||
|
|
||
| 24.10.2009, 00:35 | ||
|
а вообще подход немного не правильный... надо сохранять не весь класс, а чисто нужные данные, для этого можно внутри класса организовать структуру, которая будет хранить эти данные, а класс над этой структурой будет как интерфейс, в структуре данные хранить во встроенных типах (char,int...) и ее сохранять в файл
Добавлено через 2 минуты
1
|
||
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 00:58 [ТС] | |
|
Со структурой это мысль сейчас сделаю backup и посмотрю...
Первоначально я использовал char но мне пришлось от них отказаться в силу большого количества проблем при переводе из System::string в char .... ну то есть в char * num Такого вида легко перевести а вот в char num[10] уже никак... Добавлено через 1 минуту ну про boost я может на досуге после всего этого гемороя посмотрю для общего развития ![]() Добавлено через 17 минут Вот со структурой все это конечно очень красиво получилось...но не читается...ну не ужели реально из-за того что я string использую...
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 10:27 [ТС] | |
|
И так...даже после того как я заменил string на char * все равно так ничего и не прочиталось...проблема как мне кажется в другом...может нужен особенный способ открытия файла может еще что-то...у меня уже кончились идеи
Добавлено через 45 секунд Сохранять сохраняется читать не читается
0
|
|
|
|
|
| 24.10.2009, 11:12 | |
|
с указателями тоже не получится, т.к. размер указателя == 4 байта, а размер данных на которые он указывает чаще всего больше,и сами данные располагаются вне структуры/класса, поэтому в файл адрес этого указателя, который при восстановлении (чтении) будет указывать неизвестно куда.
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 11:36 [ТС] | |
|
Вот кстати так и получается
ну блин...реально чего делать-то? ![]() Добавлено через 5 минут String не получится char * не получится а как тогда...есть ли способ что бы получилось? Есть ли способ перевода System::string в обыкновенный char и обратно или как? Чего делать-то?
0
|
|
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 24.10.2009, 11:38 | |
|
а где ты учишься?
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 11:48 [ТС] | |
|
эээ...в универе
вообще-то...на заочке а что? МГУПИ так называемый ![]() Добавлено через 7 минут Вот я бы все понял если бы из файлов доставалась какая-нибудь непонятная кракозябра сплошная...да...тогда там либо типы надо указывать иначе либо еще что-то...но ведь из файла ни бита не читается...типа с понтом дела read проходит, а данных вообще никаких в переменных не оказалось...вот блин что меня и настораживает...
0
|
|
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 24.10.2009, 11:48 | |
|
Московский гос... ? я писал эту задачу когдато... исходноков нет нужна переписывать я просто подумал если ты в минске учиишся, я мог бы лично показать как делать
![]() выдели функции чтения записи в отдельный файл перед ними напиши заголовки иостреам,.. фстреам и пространство имён стд бывают такие загагулины
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 11:53 [ТС] | |
|
Нет я в Москве учусь
но можешь хотя бы принцип объяснить...почему не читается или куда хоть смотреть ![]() Добавлено через 1 минуту Я в прошлом году писал эту задачу но она была в консоле и написана на Borland C++ а теперь обязательно приперло в Visual С++ и с графикой все зло исходит у меня от System::string ну так объясни пожалуйста чего делать-то
0
|
|
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 24.10.2009, 11:58 | |
|
я обычно свои классы пишу с 0 - ля (не пользуясь другими..)
посмотри чему равен sizeof (TStudent) там очень много динамических вещей.. и ещё мне совсем не нравится преобразование в (char *) целого объекта попробуй вывести всё по очереди с чуством с толком с растоновкой
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|||||||||||
| 24.10.2009, 12:00 [ТС] | |||||||||||
|
вот смотри
![]() листинг файла чтения / записи они находятся в файла stud.cpp
Вот так все сейчас выглядит у меня и что характерно все сохраняется но ничего не читается вообще ни одной кракозябры не оказывается в переменной
0
|
|||||||||||
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 24.10.2009, 12:01 | |
|
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
||
| 24.10.2009, 12:04 [ТС] | ||
|
Вот листинг файла в который я сохранил данные:
Добавлено через 52 секунды char * мне не помогают сохраняются только ссылки...единственное если делать дополнительные переворот с char * в обычный char...я пока только этого не пробовал... Добавлено через 1 минуту Полностью избавиться от System::string я не могу потому что получаю данные из dataViewGrid а оттуда они только в таком виде и выходят...приходится переводить либо в char* Либо в обычный string...первый точно не вариант...
0
|
||
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 24.10.2009, 12:10 | |
|
я кы вечеру напишу и посмотрю что получится ... что то с разгона не прёт
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 24.10.2009, 12:12 [ТС] | |
|
Огромное спасибо
буду очень благодарен а-то стена меня скоро не выдержит
0
|
|
| 24.10.2009, 12:12 | |
|
Помогаю со студенческими работами здесь
20
fstream, создание файла
Запись в середину файла - fstream Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|