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

Хитрый fstream - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод из файла в массив http://www.cyberforum.ru/cpp-beginners/thread103199.html
Приветствую. Вопрос, конечно, проще некуда... но всё же. Как организовать ввод из файла чисел в массив. В бэйсике, если память не изменяет, там всё просто и числа в файле надо через пробел писать....
C++ Как исключить из цикла числа содержащиеся в массиве Есть массив исключений Int massiv={0};В нем каждый раз разное количество элементов которые больше нуля. Нужно составить условие, при котором если число больше нуля и входит в массив исключений ,... http://www.cyberforum.ru/cpp-beginners/thread103186.html
Модули.. задание C++
Тема- Стандартные модули и модульная структура приложений. Кто поможет - мегареспект. Самым бы простейшим способом.. Составить алгоритм и программу, которые составляют общий перечень необходимых...
C++ Ошибка в двумерных массивах
Пишет ошибку Run-Time Check Failure #2 - Stack around the variable 'mas2' was corrupted. Задание:Сформировать двумерный массив A(4,3) по правилу A(i,j)=sin(i+j/2).Определить наименьший элемент в...
C++ Последовательность.. с циклом do .. while http://www.cyberforum.ru/cpp-beginners/thread103145.html
Очень жесткое задание. вообще не могу понять как делать. Вычислить и вывести те члены последовательности, (x^3)/3, (-x^5)/15,.....,((-1)^n+1)* {(x^(2n+1))/((4П^2)-1)} значения которых по модулю...
C++ Переделать с использованием указателей Прошу помощи у разбирающихся людей. Есть 2 задания. Надо переделать с использованием указателей как можно проще..Буду очень признателен в помощи 1) void f2() { cout <<"Тема 2 - Основные... подробнее

Показать сообщение отдельно
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
11.03.2010, 12:26  [ТС]
может надо как-то указать, что у меня файл бинарный?

Добавлено через 10 минут
а вот-так всё верно читает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void LoadFile(string FN)
{
  fstream f;
  f.open(FN.c_str(),ios_base::in);
  if(!f)return;
  int L=FileLength(f); mem.resize(L); 
  f.close(); pos=0;
  //////////////////////////////////
  FILE *file;
  file = fopen(FN.c_str(),"rb"); 
  fgets(&mem[0],L,file);
  fclose(file);
  //f.readsome(&mem[0],L);
  //////////////////////////////////
};
Код
42 65 67 69 6E 20 68 65
72 65 00 4B 00 00 00 00
00 00 00 01 00 00 00 1A
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 41
41 41 41 41 41 41 41 00
Для продолжения нажмите любую клавишу . . .
Добавлено через 4 минуты
нашёл...
[ссылка удалена]
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
28
29
30
31
32
33
#include <iostream>
#include <fstream>
#include <iomanip>
 
int main ( int argc, char **argv ) {
 
    if ( 2 != argc ) {
        std::cout << "Usage : " << argv[0] << std::endl;
        return 1;
    }
 
    std::ifstream in ( argv[1], std::ios_base::in, std::ios_base::binary );
    if ( !in.is_open() ) {
        std::cout << "Failed to open : " << argv[1] << std::endl;
        return 2;
    }
 
    int i = 0;
    while ( in.good() ) {
        char data = 0;
 
        std::fstream::pos_type previous_pos = in.tellg();
        in.read ( & data, sizeof ( char ) );
        std::fstream::pos_type current_pos = in.tellg();
 
        std::cout 
            << "#" << i++ << " ... 0x" << std::hex << std::setw ( 2 ) << std::setfill('0') << static_cast <int> ( data )
            << " ... good ? " << std::boolalpha << in.good() << " ... " << std::dec << previous_pos << "/" << current_pos << std::endl;
    }
 
    in.close();
    return 0;
}
как раз то что надо .

Всем спасибо!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru