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

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

Восстановить пароль Регистрация
 
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
17.11.2014, 18:07     Запись двоичного кода в блокнот #1
Здравствуйте, как можно прочитать двоичной код файла, и записать его в блокнот ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.11.2014, 18:09     Запись двоичного кода в блокнот #2
например так. Прочитать файл в бинарном режиме с записью результата в string Пользуй поиск.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
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
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
17.11.2014, 18:31     Запись двоичного кода в блокнот #4
Ты всю программу покажи.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
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
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
17.11.2014, 18:34     Запись двоичного кода в блокнот #6
Всю программу в студию. Мы же не видим, что ты там наваял.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
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
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.11.2014, 18:50     Запись двоичного кода в блокнот #8
tdo22, только при чём тут работа с файлами? Ты просто не знаешь, как применяется bitset!
C++
1
 oss << bitset<8>(n);
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
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
Сообщений: 727
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
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
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;
}
Только файл большой не бери.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 19:04     Запись двоичного кода в блокнот
Еще ссылки по теме:

C++ Запись в блокнот от 0 до 255 в двоичной СС
C++ Палиндром двоичного кода
Создание файла из двоичного кода C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.11.2014, 19:04     Запись двоичного кода в блокнот #12
tdo22, а где в коде файла пробелы? Ты о чём вообще? Ты по ходу какое-то левое представление о файлах имеешь! Мешаешь в кучу бинарное и текстовое представление файла... Пробелы бывают только в тексте!

Добавлено через 33 секунды
А... в смысле пробелы между байтами...
Yandex
Объявления
17.11.2014, 19:04     Запись двоичного кода в блокнот
Ответ Создать тему
Опции темы

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