Форум программистов, компьютерный форум CyberForum.ru

Заполнение вектора функцией copy из бинарного файла - C++

Восстановить пароль Регистрация
 
Светла
3 / 3 / 0
Регистрация: 22.03.2012
Сообщений: 15
10.10.2012, 23:28     Заполнение вектора функцией copy из бинарного файла #1
Здравствуйте!
Есть бинарный файл с таким содержимым:
10 01 C0 00 00 58 01 01 00 01 00 06 03 00 00 00
00 00 00 00 38 01 00 00 00 00 00 00 00 39 01 00
01 00 00 00 00 00 45 01 00 0A 00 00 00 00 00 49
01 00 00 00 00 00 00 00 4D 04 00 00 00 00 00 00
00 38 01 A4 04 00 08 00 04 00 00 00 1E FF FF A4 
10 00 00 A4 11 01 00 A4 13 00 00 00 00 06 95

Пишу код:
C++
1
2
3
4
5
6
7
8
9
10
11
  ifstream in;
  in.open((OD_LoadCyclo->FileName).c_str(),ios::binary);
  if(!in)
  {
    ShowMessage("File is not open!");
    return;
  }
in.setf(ios::hex,ios::basefield);
vector<unsigned char> vec;
 
copy(istream_iterator<unsigned char>(in), istream_iterator<unsigned char>(), back_inserter(vec));
Вместо 95 байт, считывается 94 и теряется символ "0A" в третьей строке:
01 00 00 00 00 00 45 01 00 0A 00 00 00 00 00 49

Подскажите пожалуйста, что я делаю не так? Или что я могла не дописать?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 23:28     Заполнение вектора функцией copy из бинарного файла
Посмотрите здесь:

Написать аналог процедуры Insert. Процедурой Delete и функцией Copy не пользоваться C++
C++ Разобраться с рекурсивной функцией обхода бинарного дерева
C++ Заполнение вектора из файла
Заполнение бинарного дерева из файла C++
Заполнение динамического массива структур из бинарного файла C++
Заполнение особого бинарного дерева C++
Распределение элементов вектора внизу бинарного дерева C++
Заполнение бинарного файла структурой и вывод его на экран C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
11.10.2012, 01:16     Заполнение вектора функцией copy из бинарного файла #2
0x0A есть код перевода строки '\n', надо выставить флаг noskipws
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <vector>
 
typedef unsigned char uchar;
 
int main()
{
    std::fstream fs("in.txt", std::ios::in | std::ios::binary);
    if(fs)
    {
        std::vector<uchar> v;
        std::ios_base::fmtflags ff;
        ff = fs.flags();
        ff &= ~fs.skipws;
        fs.flags(ff);
        std::copy((std::istream_iterator<uchar>(fs)), std::istream_iterator<uchar>(), std::back_inserter(v));
        std::cout << v.size() << std::endl;
        for(auto val : v)
            std::cout << std::hex << int(val) << " ";
        fs.close();
    }
    else std::cerr << "Unable to open file" << std::endl;
    return 0;
}
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
11.10.2012, 04:33     Заполнение вектора функцией copy из бинарного файла #3
можно без алгоритма копирования обойтись.
у контейнеров есть интервальные конструкторы:
C++
1
2
 ifstream inputFile("...", ios::in | ios::binary );
 vector<char> filedata( ( istreambuf_iterator<char>( inputFile ) ),  istreambuf_iterator<char>() );
Yandex
Объявления
11.10.2012, 04:33     Заполнение вектора функцией copy из бинарного файла
Ответ Создать тему
Опции темы

Текущее время: 16:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru