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

Запись и чтения в файл числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.71
AnDron45
1 / 1 / 0
Регистрация: 11.03.2011
Сообщений: 35
21.06.2011, 22:31     Запись и чтения в файл числа #1
MS VS 2010
C++
1
2
3
4
fstream f("numbers.dat");    //Открываю бинарный файл   
f<<12;                             //пихаю в него число     
f.seekg(0);                       //указатель в начало   
cout<<f.get();                  //Считываю число
В результате выдаёт ASCII код единицы. Нужно делать что-то с указателями, можно разъяснить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2011, 22:31     Запись и чтения в файл числа
Посмотрите здесь:

Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать C++
C++ Создание файла для записи и чтения, запись в файл данных
C++ Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак.
. Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа C++
Организовать запись и чтения из файла для 3 программ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
21.06.2011, 22:49     Запись и чтения в файл числа #2
Цитата Сообщение от AnDron45 Посмотреть сообщение
MS VS 2010
C++
1
2
3
4
fstream f("numbers.dat");    //Открываю бинарный файл   
f<<12;                             //пихаю в него число     
f.seekg(0);                       //указатель в начало   
cout<<f.get();                  //Считываю число
В результате выдаёт ASCII код единицы. Нужно делать что-то с указателями, можно разъяснить?
1. Файл по умолчанию открыт как текстовый. Чтобы он был открыт как бинарный, надо явно прописать:
C++
1
fstream f("numbers.dat", ios::binary|ios::out);    //Открываю бинарный файл
2. В бинарный файл число записывается методом write()
C++
1
2
int d = 12;
f.write((char*)&d, sizeof(int));
3. Для передвижения в начало файла лучше использовать другую форму seek():
C++
1
f.seekg(0, ios::beg);
4. Для ввода из бинарного файла надо использовать метод read():
C++
1
f.read((char*)&d, sizeof(int));
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.06.2011, 22:50     Запись и чтения в файл числа #3
так что ли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
using namespace std;
 
int main () {
 fstream f("numbers.dat");    //Открываю бинарный файл   
 f<<12;                             //пихаю в него число         
 f.seekg(0);                       //указатель в начало   
 int k;
 f>> k;
 cout<< k;  
 getchar ();
 return 0;
}
AnDron45
1 / 1 / 0
Регистрация: 11.03.2011
Сообщений: 35
21.06.2011, 23:20  [ТС]     Запись и чтения в файл числа #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
#include "stdafx.h"
#include "iostream"
#include "istream"
#include "fstream"
#include "conio.h"
#include <time.h>
#include <stdlib.h>
#include <string>
using namespace std;
 
int c,i;
 
void main()
{
    fstream f("numbers.dat",ios::binary|ios::out);
    
    c=15;
    f.write((char*)&c, sizeof(int));
    c=5;
    f.write((char*)&c, sizeof(int));
    f.seekg(0, ios::beg);
    f.read((char*)&c, sizeof(int));
    cout<<c; //выдаёт 5
    f.read((char*)&c, sizeof(int));
    cout<<c;  //выдаёт 5
            
    getch();
}
То ли записи, то ли считывания не происходит
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.06.2011, 23:39     Запись и чтения в файл числа #5
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
#include "iostream"
#include "istream"
#include "fstream"
#include "conio.h"
#include <time.h>
#include <stdlib.h>
#include <string>
using namespace std;
 
int c,i;
 
int main()
{
        fstream f("numbers.dat",ios::binary|ios::out);
        
        c=15;
        f.write((char*)&c, sizeof(int));
        c=5;
        f.write((char*)&c, sizeof(int));
        f.close();
        f.open("numbers.dat",ios::binary|ios::in);
        f.seekg(0, ios::beg);
        f.read((char*)&c, sizeof(int));
        cout<<c; //âûäГ*ВёГІ 5
        f.read((char*)&c, sizeof(int));
        cout<<c;  //âûäГ*ВёГІ 5
                        
        getch();
}
...И да, скачай где-нибудь hex- редактор; программа не сработала- встал вопрос, а записалось ли в файл? Открыл в hex-редакторе и посмотрел, всё вперёд.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
21.06.2011, 23:45     Запись и чтения в файл числа #6
Цитата Сообщение от AnDron45 Посмотреть сообщение
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
#include "stdafx.h"        // создал не пустой проест
 
// -- остальное - не нужно --
#include <iostream>
#include <fstream>
using namespace std;
 
int c,i;
 
int main()
{       // -- нужно не только для записи, но и для чтения открывать -- !!
    fstream f("numbers.dat",ios::binary|ios::out|ios::in); 
    
    c=15;
    f.write((char*)&c, sizeof(int));
    c=5;
    f.write((char*)&c, sizeof(int));
    f.seekg(0, ios::beg);
    f.read((char*)&c, sizeof(int));
    cout<<c; //выдаёт 5
    f.read((char*)&c, sizeof(int));
    cout<<c;  //выдаёт 5
    system("pause");
return 0;       
    //getch();   -- это не нужно
}
То ли записи, то ли считывания не происходит
Естественно, читать не будет. Открыл-то только для записи. А кто режим для чтения указывать будет?
Попробуй с моими изменениями...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2011, 23:51     Запись и чтения в файл числа
Еще ссылки по теме:

C++ Дана строка. Определить, представляет ли она собой запись целого числа или запись дробного числа
Запись и чтения из файла матрицы C++
C++ Класс записи/чтения матрицы в файл

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

Или воспользуйтесь поиском по форуму:
AnDron45
1 / 1 / 0
Регистрация: 11.03.2011
Сообщений: 35
21.06.2011, 23:51  [ТС]     Запись и чтения в файл числа #7
ValeryLaptev, kravam, огромное вам спасибо за помощь!
Yandex
Объявления
21.06.2011, 23:51     Запись и чтения в файл числа
Ответ Создать тему
Опции темы

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