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

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

Войти
Регистрация
Восстановить пароль
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
#1

Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? - C++

23.04.2013, 19:17. Просмотров 311. Ответов 5
Метки нет (Все метки)

Есть vector<bool> mas(300000);
как можно сгруппировать по 8 элементов этого вектора, чтобы записывать в файл. Ведь в файл запись осуществляется побайтно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 19:17     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл?
Посмотрите здесь:

C++ Как создавать, записывать в файл
C++ как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает?
Как правильно открывать файл и записывать/читать из него C++
C++ ЕХЕ файл после ввода элементов вектора прекращает работу
Сведения о машине можно считывать/записывать в файл C++
Можно ли заставить класс записывать самого себя в файл? C++
Как можно записывать в существующие файл, в котором уже есть информация? C++
Как можно записывать в вектор типа классса? C++
Как преобразовать файл в биты (в нули и единицы), чтобы потом можно было его зашифровать в код Грея? C++
Как записывать в текстовый файл, многократно C++
Как записывать в txt-файл определенные строки из xml-файлов? C++
Как записывать в файл символы с пробелами? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
23.04.2013, 19:23
  #2

Не по теме:

Уже вторая аналогичная тема. Есть подозрение, что подход к задаче выбран не тот. Озвучьте задачу полностью.

танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
23.04.2013, 19:27  [ТС]     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #3
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

Уже вторая аналогичная тема. Есть подозрение, что подход к задаче выбран не тот. Озвучьте задачу полностью.

задача такая, реализовать метод Шеннона-Фано для сжатия изображения. Для каждого значения цвета код я получить смог. Код неравномерный. Я взял коды эти и через цикл получил один дленнющий вектор типа bool. Осталось его записать в файл. Но надо именно побитово, а побитово нельзя. Поэтому и надо как-то паковать в байты. Заранее спасибо
cyberbrain1000
23 / 23 / 3
Регистрация: 15.04.2013
Сообщений: 62
23.04.2013, 19:55     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #4
вот конвертация вектора в байт
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<bool> v = {true, true, false, false, false, false, false, false};
    if(sizeof(char) == 1)
    {
        char byte = 0;
        for(int i = 0; i < v.size(); ++i)
        {
            if(v.at(i))
                byte |= 1 << i;
        }
        std::cout << (int)byte;
    }
    else
        std::cout << "Error\n";
    return 0;
}
Nick Alte
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
23.04.2013, 20:16     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #5
Цитата Сообщение от cyberbrain1000 Посмотреть сообщение
C++
1
if(sizeof(char) == 1)
По стандарту это условие верно всегда, при любых обстоятельствах.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
24.04.2013, 05:49  [ТС]     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл? #6
Цитата Сообщение от cyberbrain1000 Посмотреть сообщение
std::vector<bool> v = {true, true, false, false, false, false, false, false};
такую строку мой компилятор Visual Studio 2010 не воспринимает, ругается на скобки. И почему там всего 8 значений?
Yandex
Объявления
24.04.2013, 05:49     Как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл?
Ответ Создать тему
Опции темы

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