Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по филам, read from file such as int but not char 
:(
    Опции темы
knut
Дата 13.6.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



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

}

 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
pablo
Дата 13.6.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Если числа от 0 до 9, то можно так, если нет, то надо бы узнать как они отделяются. 

Код

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

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


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
MAKCim
Дата 13.6.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Код

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

Это сообщение отредактировал(а) MAKCim - 13.6.2006, 18:05


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
DeadSoul
Дата 13.6.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



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


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
SaDFromSpb
Дата 14.6.2006, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



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

Это сообщение отредактировал(а) SaDFromSpb - 14.6.2006, 02:52


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
knut
Дата 14.6.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



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


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
MAKCim
Дата 14.6.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

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

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

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

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

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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 14.6.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Наверно, нет инклюда fstream. 


--------------------
PM MAIL ICQ Skype   Вверх
knut
Дата 14.6.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет




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).
У Старауструпа и Кернигана нечего не нашел.
Зарание спасибо. 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Oleg_Ci
  Дата 14.6.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



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

#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;
}
 
PM MAIL   Вверх
MAKCim
Дата 14.6.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

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

у Кернигана понятно почему  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');
}
 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
knut
Дата 15.6.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



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
 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
SaDFromSpb
Дата 15.6.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



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

Это сообщение отредактировал(а) SaDFromSpb - 15.6.2006, 18:06


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
MAKCim
Дата 15.6.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

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

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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SaDFromSpb
Дата 15.6.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



MAKCim, ну не поможет, так не поможет =).  Мы же не видим его кода. 


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.