Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Ввод\вывод данных в файл (http://forum.oszone.net/showthread.php?t=232053)

Elfenlide 04-04-2012 15:21 1893346

Ввод\вывод данных в файл
 
Вложений: 1
Всем доброго времени суток, решил изучить тему классы на начальном уровне,и параллельно ввод вывод данных в\из(файл) .
Суть программы: Ввод данных о студентах и отображение в виде таблицы на консоли,а так же загрузка и сохранение информации в\из файл.
Проблемы: Информацию на консоль выводит сразу после ввода,в итоге всё не красиво, не получается сделать всё в виде отдельной таблицы без логов о вводе данных (Это я придумал как сделать=сначала вывод в файл,а потом ввод из файла на консоль полученный результат),но реализовать не получилось.Так же информация которую я ввожу,после вторичного пробега по циклу затирает файл Files.dat и на место него пишет новый,в итоге получается что у меня в файле не вся инфа о студентах а только информация о последнем добавленном.
Работаю под Windows 7 на Visual Studio 2010
Код программы:

virus8 05-04-2012 06:48 1893748

Чтоб не затирало файл попробуйте в эту строку fstream out("files.dat"); добавить ios_base:: out|ios_base::app, мне кажется, что файл у вас постоянно новый создается!!

Elfenlide 05-04-2012 15:21 1894010

Так и есть,создаёться новый,смотрел в логах,атрибуты такие добавлял,но не помогло(
Может есть какой-то другой способ вывода в файл?другая команда похожая...кто подскажет\
Я нашёл ещё "fwrite" в одной из лабораторных чьих-то,но как ей нормально пользоваться так и не понял

virus8 05-04-2012 20:54 1894266

вот попробуй не тоже самое, но очень похоже как раз под твоей темой светится!!!
сразу подскажу смотри функцию void Tkniga::Add()


тут конечно не ученики, но очень похоже. Просто используй не fstream (я еще сам толком не разобрался, но ему специально надо указывать, что делать), а пользуй для начала ofstream вывод, ifstream ввод! Удачи.

Elfenlide 07-04-2012 16:08 1895181

к сожалению моя запись и запись через ifstream это тоже самое,просто ifstream это краткая запись.

pva 05-05-2012 19:43 1911142

если нужно задержать форматированный вывод, можно использовать временный буфер в памяти stringstream.
Код:

#include <sstream>
...

ostringstream tmp;
tmp << setw(8) << ... << ... ;
...

// а когда придёт момент всё это выплюнуть:

cout << tmp.rdbuf() << endl;

Но помни, то последующая запись не очищает уже записанного (и оно болтается в буфере). Чтобы очистить, вызови ostringstream::str(const string&) с пустой строкой.


Время: 06:37.

Время: 06:37.
© OSzone.net 2001-