Войти

Показать полную графическую версию : Работа с файлами


D@n1k007
18-06-2010, 19:34
Всем доброе время суток! Очень старательно и напряженно изучал С++... Все было хорошо пока не дошел до работы с файлами. В книжке которая у меня сейчас, написана полная ахинея и "вода".
Меня не так много в этой области интересует, если кто может подскажите:

1. Если есть текстовый файл с числами написанными через пробел, как их прочитать?
2. Если количество чисел в файле не известно, как его можно узнать? Вроде как для этого используется функция eof, но не разобравшись в первом второе проверить не могу :(
3. Обобщающий вопрос 2 предыдущих :) Как создать массив из чисел находящихся в файле? Самое не понятное как создать массив размерность которого заданна переменной, а не константой :(

Простите если кому вопросы покажутся глупыми, просто интересующей меня инфы ни на форуме ни в интернете не нашел.

Буду благодарен за любую информацию и помощь!

pva
19-06-2010, 10:34
какую книжку читаешь?
1) найдено гуглем: http://www.programmingforums.org/post148440.html

#include <fstream>
std::ifstream fin("1.txt");
int number;
if ((fin >> number).good()) std::cout << "got number " << number << "\n";

2) посчитать (сколько раз удачно прочитается)

#include <algorithm>
#include <iterator>
#include <fstream>
#include <iostream>
typedef std::istream_iterator<int,char> num_iter;
std::ifstream fin("1.txt");
std::cout << "number count is " << std::count(num_iter(fin), num_iter()) << "\n";

3) читать до тех пор, пока читается и складывать в массив

#include <algorithm>
#include <vector>
#include <iterator>
#include <fstream>
#include <iostream>
typedef std::istream_iterator<int,char> num_iter;
std::ifstream fin("1.txt");
std::vector<int> array;
std::copy(num_iter(fin), num_iter(), std::back_inserter(array));

D@n1k007
19-06-2010, 16:06
pva,
Спасибо! Не одного меня интересовал видимо такой вопрос :)
Читаю "Алгоритмизация и программирование процедур обработки информации" А. И. Щедрина :(

У меня есть вопрос, вот все примеры сводятся к тому что числа будут складываться в массив, а можно без массива на прямую "выдергивать" их из файла и проводить с ними манипуляции? Просто если складывать в массив смысл использования файла теряется, ведь загрузка памяти не уменьшается :( А если речь идет о тысячах чисел, так это вообще... :lamer:




© OSzone.net 2001-2012