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

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

Войти
Регистрация
Восстановить пароль
 
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
#1

Запись двоичного кода в блокнот - C++

17.11.2014, 18:07. Просмотров 654. Ответов 11
Метки нет (Все метки)

Здравствуйте, как можно прочитать двоичной код файла, и записать его в блокнот ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись двоичного кода в блокнот (C++):

Как организовать побитовую запись двоичного кода (Хаффман) ? - C++
Пытаюсь реализовать алгоритм Хаффмана, который будет сжимать текстовый файл. Уже построено дерево tree, у которого есть: tree->simvol //...

Запись в блокнот от 0 до 255 в двоичной СС - C++
Здравствуйте, как написать цикл который запишет в блокнот числа от 0 до 255 в двоичной системы счисления ?

Палиндром двоичного кода - C++
Для введенного с клавиатуры натурального числа n(n<=32000) определить является ли его запись в двоичной системе счисления палиндромом?

Перевод двоичного кода в текст - C++
Здравствуйте уважаемые форумчане, у меня было задание сделать шифратор/дешифратор текста, хотя в С++ не работал ^_^ У вас на форуме нашел...

Создание файла из двоичного кода - C++
Здравствуйте, у меня есть переменная типа std::string В ней хранится двоичной код, как мне создать файл (.txt), и записать в него этот...

Преобразование двоичного кода в ASCII - C++
Ребята, у меня вопрос. Вот я, например, имею строку "10011001" или подобную из восьми единиц и нулей. Вопрос: как преобразовать эту строку...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
17.11.2014, 18:09 #2
например так. Прочитать файл в бинарном режиме с записью результата в string Пользуй поиск.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
17.11.2014, 18:26  [ТС] #3
Выдает ошибку:
Код
C:\Users\*****\Desktop\c++\main.cpp|20|error: aggregate 'std::ostringstream oss' has incomplete type and cannot be defined|
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
17.11.2014, 18:31 #4
Ты всю программу покажи.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
17.11.2014, 18:33  [ТС] #5
Одну ошибку поборол, теперь появилась другая:
Код
C:\Users\*****\Desktop\C++\main.cpp|14|error: missing template arguments before '(' token|
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("input.dat", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << bitset(n);
    string s = oss.str();
    system("PAUSE");
    return 0;
}
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
17.11.2014, 18:34 #6
Всю программу в студию. Мы же не видим, что ты там наваял.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
17.11.2014, 18:43  [ТС] #7
Весь код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("input.dat", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << bitset(n);
    string s = oss.str();
    system("PAUSE");
    return 0;
}
Ошибка на 14 строке:
Код
C:\Users\*****\Desktop\C++\main.cpp|14|error: missing template arguments before '(' token
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
17.11.2014, 18:50 #8
tdo22, только при чём тут работа с файлами? Ты просто не знаешь, как применяется bitset!
C++
1
 oss << bitset<8>(n);
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
17.11.2014, 18:51 #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Это я про <8> забыл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <sstream> 
#include <bitset>
#include <fstream>
#include <iostream>
#include <cstdlib>
 
int main()
{
    std::ifstream ifs("input.dat", std::ifstream::binary);
    std::ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << std::bitset<8>(n);
    string s = oss.str();
    cout << s << endl;
 
    system("pause");
    return 0;
}
Считывает 1 байт и выводит на экран, надо цикл сделать и выводить в файл, если нужно.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
17.11.2014, 18:59  [ТС] #10
Спасибо, но как сделать так, чтоб мне выводило весь код файла, а не только конец ?

Добавлено через 3 минуты
Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("1.txt", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    while(!ifs.eof())
    {
        ifs.read((char *)&n, 1);
        oss << bitset<8>(n);
        string s = oss.str();
        cout << s;
    }
 
    system("PAUSE");
    return 0;
}
Но теперь весь двоичной код "слипился", и вышло что-то вроде этого:
Код
01101000001101000010110101100111001101010111001001101110000011010000101000001101
00001010001100100011000100110000001101110011001000110000001100000011100000110100
00110010001101110011000100001010000011010000101000110101011010110111010001101001
00101101001101110110100001101000001101000010110101100111001101010111001001101110
00001010000011010000101000110101011010110111010001101001001011010011011101101000
01101000001101000010110101100111001101010111001001101110000011010000101000001101
00001010001100100011000100110000001101110011000100110010001100000011000000111000
00110100001100100011011100110001000010100000110100001010001101010110101101110100
01101001001011010011011101101000011010000011010000101101011001110011010101110010
01101110000010100000110100001010001101010110101101110100011010010010110100110111
01101000011010000011010000101101011001110011010101110010011011100000110100001010
00001101000010100011001000110001001100000011011100110001001110010011001000110000
00110000001110000011010000110010001101110011000100001010000011010000101000110101
Для продолжения нажмите любую клавишу . . .
как сделать пробел между ними ?
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
17.11.2014, 19:01 #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <sstream> 
#include <bitset>
#include <fstream>
#include <iostream>
#include <cstdlib>
 
int main()
{
    std::ifstream ifs("input.dat", std::ifstream::binary);
    std::ostringstream oss;
    unsigned char n;
    while (true)
    {
    ifs.read((char *)&n, 1);
    if (ifs.eof()) break;
    oss << std::bitset<8>(n) << " ";
    }
    string s = oss.str();
    cout << s << endl;
 
    system("pause");
    return 0;
}
Только файл большой не бери.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
17.11.2014, 19:04 #12
tdo22, а где в коде файла пробелы? Ты о чём вообще? Ты по ходу какое-то левое представление о файлах имеешь! Мешаешь в кучу бинарное и текстовое представление файла... Пробелы бывают только в тексте!

Добавлено через 33 секунды
А... в смысле пробелы между байтами...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 19:04
Привет! Вот еще темы с ответами:

Преобразование двоичного кода в текст - C++
есть код: struct home { char name; long number; int dom; int kvartira; };

Реализация вычитания двоичного кода - C++
Даны два массива, например 110001 и 11111. Не знаю как создать цикл, в частности занимание. dif = A - B + carry; // carry - перенос if...

Запись двоичного файла - C++
Ребята, проясните, пожалуйста, ситуацию с двоичным выводом в файл. Конкретно двоичный, а не бинарный - как это осуществить в моём случае. ...

Работа с файлом в виде двоичного кода - C++
Здравствуйте. Продолжаю работу над внедрением в картинку TIFF текстового файла. Собственно говоря, задача №1 - считать текст из файла в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.11.2014, 19:04
Ответ Создать тему
Опции темы

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