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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
mdj
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 4
#1

Как записать битсет в файл? - C++

24.08.2009, 15:48. Просмотров 1722. Ответов 5
Метки нет (Все метки)

Как записать битсет в файл ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2009, 15:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как записать битсет в файл? (C++):

создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы. - C++
Не могу понять почему не работает вот этот кусок текста. ofstream q ("1.part"); for (int i=0; i<10; ++i) { q << mas ; ...

Как записать файл в массив? - C++
Добрый день, как записать побитово файл в массив типа int? Возможно ли картинку записать в массив? Нужно не буквы из txt файла, а сами...

Как считать и записать в файл? - C++
Доброго времени суток. Вопрос вот в чем. Реализую md5 алгоритм шифрования и финальным штрихом является считывание из файла незашифрованного...

Как записать в файл FileWrite(...) ? - C++
cherez FileWrite(...), peremennuyu tipa long, che ne proboval abrakadabra vylazit...pomogite

Как записать структуру в файл? - C++
есть структура struct frend { char name; char tel; };как записать ее в файл и потом считат соответственно)) заранее...

Как записать в файл данные? - C++
Вот готовый код: #include <iostream> #include <stdlib.h> #include <locale> #include <conio.h> using namespace std; int...

5
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
24.08.2009, 16:43 #2
Оно же по сути структура, то есть так как-то:
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
#include <stdio.h>
 
/* Запись и чтение битовых полей */
    
/* типа таймер на три часа с минутами */
struct timer3h {
    unsigned int hours : 2;
    unsigned int minutes : 6;
};
 
int main() {
    char *file_name = "test.bin"; /* имя тестового файла */
    FILE *testfile;
    struct timer3h tw, tr;
    tw.hours = 2;
    tw.minutes = 35;
    printf("Befor writing to file: %d:%02d\n", tw.hours, tw.minutes);
    /* запись в файл */
    if( (testfile = fopen(file_name, "wb")) == NULL ){
        printf("Can't open file %s for writing!\n", file_name);
        return(1);
    }
    if ( fwrite(&tw, sizeof(struct timer3h), 1, testfile) != 1 ){
        printf("Can't write to file %s\n", file_name);
        return(1);
    }
    fclose(testfile);
    
    /* читаем, что записали */
    if ( (testfile = fopen(file_name, "rb")) == NULL ){
        printf("Can't open file %s for reading!\n", file_name);
        return(1);
    }
    if ( fread(&tr, sizeof(struct timer3h), 1, testfile) != 1 ){
        printf("Can't read from file %s\n", file_name);
        return(1);
    }
    fclose(testfile);
    printf("After reading from file: %d:%02d\n", tr.hours, tr.minutes);
    
    return(0);
}
0
ISergey
Maniac
Эксперт С++
1389 / 900 / 55
Регистрация: 02.01.2009
Сообщений: 2,692
Записей в блоге: 1
24.08.2009, 16:51 #3
Цитата Сообщение от mdj Посмотреть сообщение
Как записать битсет в файл?
хм..
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <fstream>
#include <bitset>
 
 
int main(){
    std::bitset<4> b;
    std::ofstream file("file.txt");
    file << b;
    file.close();
    return 0;
}
0
mdj
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 4
24.08.2009, 17:09  [ТС] #4
Цитата Сообщение от ISergey Посмотреть сообщение
хм..
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <fstream>
#include <bitset>
 
 
int main(){
    std::bitset<4> b;
    std::ofstream file("file.txt");
    file << b;
    file.close();
    return 0;
}
Пробовал, получается что записывает он не биты, а символы. Т.е. здесь file.txt будет 4 байта. А мне нужно записать непосредственно биты.
0
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
24.08.2009, 17:20 #5
Биты отдельно писать не получится, надо
- либо привести поле к чему-то типа int или char, и записывать новый тип.
- либо, если хотите получить что-то читабельное, соответственно сделать более глубокое преобразование - биты преобразовывать в символы 0/1 и складывать, например, в строку символов.
1
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
25.08.2009, 04:21 #6
Цитата Сообщение от mdj Посмотреть сообщение
Пробовал, получается что записывает он не биты, а символы. Т.е. здесь file.txt будет 4 байта. А мне нужно записать непосредственно биты.
Могу ошибаться, но на сколько знаю, структуры (не важно, объявленные, как struct, или std::bitset - по сути примерно то же самое) выравниваются по границе слова. Файл, который пишет моя програмка, тоже состоит из 4 байт:
Код
$ hexdump test.bin 
0000000 008e 0000
Причём странную особенность заметил: собранная компилятором gcc для cygwin (версию на работе посмотрю, сейчас не помню, но ставил года два назад...) первым байтом пишет 8e, а дальше нули. А gcc 4.3.2 под debian пишет три байта мусора. Пришлось ещё <string.h> добавить и две строки:
C
1
2
bzero((void *)&tw, sizeof(struct timer3h));
bzero((void *)&tr, sizeof(struct timer3h));
Короче, попробуйте битовые поля по границе слова выравнивать (4 байта для 32 битных систем, для 64 битных видимо в два раза больше будут)...
0
25.08.2009, 04:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2009, 04:21
Привет! Вот еще темы с ответами:

Как записать картинку в файл - C++
Доброго времени суток. У меня есть много вопросов, на которые перед реализацией своего проекта я хотел бы получить ответы...))) Допустим...

Как записать в файл класс? - C++
class _someclass{ public: ... } class _mainclass{ piblic: _someclass *sc; int n;//размер\количество sc } ...

Как записать класс в файл? - C++
Вот допустим есть класс class LOL { private: bool h; int s; public: LOL(int s,bool h) {

Как записать результат в файл - C++
здравствуйте! имеется код на С++, все работает, результат выводит на экран.. но нужно чтоб выводил результат в файл.txt... помогите...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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