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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
#1

Записать по-битово в файл - C++

03.09.2013, 13:10. Просмотров 438. Ответов 10
Метки нет (Все метки)

Нужно записать по-битово в файл. Вот на етой строке компилятор кидает ошибку

out.write((*char)&this, sizeof(car));


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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include"iostream"
#include"fstream"
 
using namespace std;
 
class car
{
private:
    char* mark;
    char* model;
    char* price;
public:
    car()
    {}
    car(char* mark1, char* model1, char* price1)
    {
    mark=mark1;
    model=model1;
    price=price1;
    }
    
    void appendToFile(char* file)
    {
        ofstream out(file, ios::app);
    out<<mark<<endl;
    out<<model<<endl;
    out<<price<<endl;
    out.close();
    }
    void toBinaryFile(char* file)
    {
        ofstream out(file, ios::binary|ios::app);
            out.write((*char)&this, sizeof(car));
            out.close();
    }
 
    car* findByName(char* mark,char* file)
    {
        car* res;
    ifstream in(file);
        while(!in.eof())
        {
        char* str=new char[40];
        in>>str;
        if(!strcmp(str,mark))
        {
            char* model=new char[40];
        in>>model;
            char* price=new char[40];
        in>>price;
        car tmp(mark,model,price);
        res=&tmp;
        break;
                }
        else res=NULL;
        }
        in.close();
        return res;
    
        }
    void print()
    {
        cout<<mark<<" "<<model<<" "<<price<<endl;
    }
};
 
int main()
{
    
    car c("BMW", "M5","50000");
    //c.appendToFile("outbox.txt");
    c.toBinaryFile("outbox.txt");
    car* avto=c.findByName("BMW","outbox.txt");
    avto->print();
    system("pause");
    return 0;
 
}
Прошу адекватной помощи и объяснения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2013, 13:10     Записать по-битово в файл
Посмотрите здесь:

C++ записать в файл
Файл: Записать в файл g целые числа b1..bn по следющим условиям: b[i] = i и b[i] = 2^i +3^(i+1) C++
Файл: Записать список структур в файл C++
C++ Взять готовый файл с набором чисел, в нем найти максимальное значение и записать во второй созданный файл
C++ Записать в файл g все четные числа файла f, а в файл n-все нечетные
C++ Записать из файла f четные цифры в файл g, а нечетные в файл h
C++ Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6473 / 2248 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.09.2013, 13:24     Записать по-битово в файл #2
Цитата Сообщение от Atlant_V Посмотреть сообщение
записать по-битово в файл
Нельзя.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,049
Завершенные тесты: 1
03.09.2013, 13:26     Записать по-битово в файл #3
out.write((*char)&this, sizeof(car)); вы пытаетесь во первых взять указатель от указателя на экземпляр класса (&this)
во вторых записать его в файл, когда нужно писать именно данные из класса

C++
1
2
3
out.write(mark, strlen(mark));
out.write(model, strlen(model));
out.write(price, strlen(price));
в третьих sizeof не возьмет размер строки - в случае sizeof(*char) он вернет размер указателя, надо пользоваться функциями взятия размера строки
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 13:51  [ТС]     Записать по-битово в файл #4
Raali, заменил на Ваш вариант,но дальше не работает. Или я еще что-то не понял?
zer0mail
Заблокирован
03.09.2013, 16:17     Записать по-битово в файл #5
Прежде чем просить "адекватной помощи и объяснения" надо адекватно объяснить задачу: что, куда и зачем писать.
А то часто пишут одно, хотят другое, а надо третье
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 16:48  [ТС]     Записать по-битово в файл #6
Цитата Сообщение от zer0mail Посмотреть сообщение
Прежде чем просить "адекватной помощи и объяснения" надо адекватно объяснить задачу: что, куда и зачем писать.
А то часто пишут одно, хотят другое, а надо третье
Как мне поставили условие, так я и здесь написал
тогда уточню и спрошу еще раз, если сам не допру.
zer0mail
Заблокирован
03.09.2013, 17:12     Записать по-битово в файл #7
Никогда не видел заданий, сформулированных так: "записать по-битово в файл"
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 17:31  [ТС]     Записать по-битово в файл #8
Цитата Сообщение от zer0mail Посмотреть сообщение
никогда не видел заданий, сформулированных так: "записать по-битово в файл"
препод на ходу придумал)))
zer0mail
Заблокирован
03.09.2013, 17:50     Записать по-битово в файл #9
Но мы-то при этом не присутствовали и не в курсе, что и как надо записать (а телепаты и ясновидцы в отпуске).

Если некоторые этого не понимают, то как им понять С++?
Dmitriy_M
03.09.2013, 17:58
  #10

Не по теме:


Цитата Сообщение от Atlant_V Посмотреть сообщение
Нужно записать по-битово в файл
Это физически невозможно. Если вы этого не понимаете, то что вы тут делаете?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 18:03     Записать по-битово в файл
Еще ссылки по теме:

Дан файл. В новый файл записать самую длинную фразу и фразу с наибольшим количеством слов C++
C++ Записать в файл
Выражение должно быть доступным для изменения. Решение - только по-битово копировать? C++
Файл: Записать фамилию и оценку студента в файл C++
Записать структуру в файл с++ C++

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

Или воспользуйтесь поиском по форуму:
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 18:03  [ТС]     Записать по-битово в файл #11
Dmitriy_M, Я тут учусь, поэтому я тут!
Yandex
Объявления
03.09.2013, 18:03     Записать по-битово в файл
Ответ Создать тему
Опции темы

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