Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос по филам


Автор: knut 13.6.2006, 14:36
Привет вем.
У меня тaкая задача. 
Мне нужно уже из полного фила создонного мнои запипесать в вектор содержимое фаила.
В филе только инт числа.
vector<int>vec,
void Func(CFile *istream) 
{
   if((istream = fopen("aa.txt","rb")) ==  NULL)
   AfxMessageBox("Error")
     else
     {
       ///  to rea and write in  vector
     }

}

 

Автор: pablo 13.6.2006, 15:17
Если числа от 0 до 9, то можно так, если нет, то надо бы узнать как они отделяются. 

Код

void Func() 
{
   std::vector<int> numbers;

   std::ifstream input(fileName);
   char value;
   while(!input.eof())
   {
        input >> value;
        numbers.push_back(value - '0');    
   }
}
 

Автор: MAKCim 13.6.2006, 17:55
Код

void Func(basic_ifstream<int>& stream)
{
    istreambuf_iterator<int> begin(stream), end;
    for (; begin!=end; ++begin) vec.push_back(*begin);
}
     

Автор: DeadSoul 13.6.2006, 23:04
MAKCim, добавить к твоему примеру std::copy и цены нтебе не будет 

Автор: SaDFromSpb 14.6.2006, 02:50
Вариации на тему:
Код
    copy( istream_iterator<int>(file),
          istream_iterator<int>(),
          back_inserter(vec) );
  

Автор: knut 14.6.2006, 11:41
pablo 
1.у менчя на этои  строке выдает ошыбку если не трудно разясни.
std::ifstream input(fileName); 
и обясни пожалуста почему  в push_back e value - '0'
спасибо. 

Автор: MAKCim 14.6.2006, 11:48
Цитата

обясни пожалуста почему  в push_back e value - '0'

тебе надо символ, представляющий собой цифру, перевести в реальную цифру
т к в ASCII таблице '0' имеет порядковый номер 48, а '9' - 57
то чтобы получить int-ый эквивалент char-а нужно ... - '0'
или ... - 48

Добавлено @ 11:49 
Цитата

1.у менчя на этои  строке выдает ошыбку если не трудно разясни.
std::ifstream input(fileName); 

может чуть больше кода приведешь? 

Автор: Любитель 14.6.2006, 12:24
Наверно, нет инклюда fstream. 

Автор: knut 14.6.2006, 12:30

MAKCim  код такои.
std::vector<int>vec;
std::ifstream input("sergey.txt");
char value;
while(!input.eof())
{
input>>value;
vec.push_back(value - '0');
}
MAKCim  скин пожалуста документацыю по  филлам а точнее где можно прочeтать про (basic_ifstream,istreambuf_iterator).
У Старауструпа и Кернигана нечего не нашел.
Зарание спасибо. 

Автор: Oleg_Ci 14.6.2006, 18:11
Что-то я проблемы ни какой не вижу. Разве нельзя вот-так:
Код

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
  ofstream fout("aa.txt");
  vector<int> INT;
  int i,j;

  for ( i=0; i<100; i++ )
  { // записываем в файл числа int
    fout<<i;
    fout<<" ";
  }
  fout.close();

  ifstream fin("aa.txt");
  // считываем из файла числа int
  for (i=0; (fin>>j)!=NULL; i++)
    INT.push_back(j);
  fin.close();

  // выводим числа int
  for(i=0; i<INT.size(); i++)
    cout<<INT[i]<<" ";

  cin.get();
  return 0;
}
 

Автор: MAKCim 14.6.2006, 19:05
Цитата

У Старауструпа и Кернигана нечего не нашел.

у Кернигана понятно почему  smile 
а у Страуструпа есть, лучше смотри
Код

#include <fstream>
#include <iostream>
#include <vector>

std::vector<int>vec;
std::ifstream input("sergey.txt");

char value;
while(!input.eof())
{
input>>value;
vec.push_back(value - '0');
}
 

Автор: knut 15.6.2006, 17:50
MAKCim, 

Некак не могу разобрать эти строки

istream_iterator<int>begin(stream),end();
for(;begin!=end;++begin) и почему  у менчя такие ошыбки? 
вроде с инклудами все ок если конечно не затруднит отвть пожалуста спасибо.


 error C2065: 'istream_iterator' : undeclared identifier
 error C2062: type 'int' unexpected
 error C2065: 'begin' : undeclared identifier
 error C2065: 'end' : undeclared identifier
 error C2062: type 'int' unexpected
 error C2100: illegal indirection
 

Автор: SaDFromSpb 15.6.2006, 18:06
knut, напиши using namespace std; сразу после инклудов.  

Автор: MAKCim 15.6.2006, 21:01
Цитата

напиши using namespace std; сразу после инклудов.  

как это поможет?
файлы нужные включены, используется std:: 

Автор: SaDFromSpb 15.6.2006, 21:50
MAKCim, ну не поможет, так не поможет =).  Мы же не видим его кода. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)