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

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

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

Шестнадцатеричый дамп - C++

11.04.2013, 03:04. Просмотров 631. Ответов 2
Метки нет (Все метки)

Доброго времени суток, господа. Возник вопрос. Написано в задание создать класс массив для хранения строк и реализовать методы вывода массива строк в текстовом виде и в виде шестнадцатеричного дампа. Так вот. Как сделать вывод в виде шестнадцатеричного дампа? Что такое дамп? Правильно ли я понял смысл, что массив объектов класса стоит сделать, или в самом классе реализовать массив? И можно ли пользоваться string в этом случае? Вот код:
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
#include <iostream>
#include <string>
 
using namespace std;
 
class Array{
    public:
        string name;
        Array(){};
    private:
        friend istream& operator >> (istream& in, Array& obj){
            cin>>obj.name;
            return in;
        };
        
        friend ostream& operator << (ostream& out, Array& obj){
            cout<<obj.name;
            return out;
        };
 
};
 
int main(){
    Array a;
    cin>>a;
    cout<<a;
//  cout<<hex(a.name);
    return 0;
};
Добавлено через 18 минут
Сори за ошибку в название темы. Как ее исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2013, 03:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шестнадцатеричый дамп (C++):

Дамп файла - C++
Доброго времени дня. Помогите разобраться с простой задачей. Преподаватель пишет на листике например число &quot;12&quot; и просит ручкой написать...

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

MySQL, загрузить дамп файл - C++
Есть MySQL, нужно с помощью сишного API загрузить *.sql- файл в БД. Искал не нашел для этого функции, возможно кто-то сталкивался с...

16-ричный дамп бинарного файла - C++
задание: сделать программу, виводящую 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной...

написать 8-чный и 16-ный дамп - C++
нам задали написать 8-ный и 16-ный дамп в С++ я просто очень плохо пока в этой теме разбираюсь, помогите плиз...

16-ричный дамп бинарного файла? - C++
Как создать программу, виводящую 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной...

2
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
11.04.2013, 03:32 #2
Написано в задание создать класс массив для хранения строк
очевидно они хотят видеть вместо
C++
1
string name;
C++
1
vector<string> name;
так как просят массив строк, а не одну строку

C++
1
и реализовать методы вывода массива строк
я подозреваю тут надо либо внести в public-класса метод типа
C++
1
2
3
4
5
        
void Array::show() {
                            for (vector<string>::iterator it=name.begin(); it!=name.end(); ++it)
                                 cout<<*it<<endl;
};
а не перегружать операторы >>
хотя может и я слишком дословно понимаю...

hex-дамп вы можете получить уже обойдя саму строку и разобрав символы из которых она состоит, понимая каждый символ строки как число, для моей структуры будет выглядеть как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Array::showh() {
                            for (vector<string>::iterator it=name.begin();
                                it!=name.end();
                                ++it)
                            {
                            string mystr = *it;
                            cout<<"0x";
                            for (string::iterator it2=mystr.begin();
                                it2!=mystr.end();
                                ++it2)
                                cout<<hex<<(int)(*it2);
                                cout<<endl;};
                            }
если все закорючки правильно поставил - должно работать, но я не проверял

может есть и какой-то другой способ, я об этом никогда не задумывался, сделал бы так

Добавлено через 10 минут
кстати можно попробывать кастануть reinterpret_cast<int>() но мне не совсем понятно над чем кастовать

Добавлено через 3 минуты
вот нашёл на мсдн-е
http://msdn.microsoft.com/en-us/library/e0w9f63b(v=vs.80).aspx
как они его кастуют над адресом массива, чтобы получить хеш-функцию, как бы предполагается что адреса всех элементов различные
можно по аналогии попробывать для объектов string-а
1
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
11.04.2013, 10:33  [ТС] #3
Спасибо большое. Буду разбираться =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 10:33
Привет! Вот еще темы с ответами:

Собрать дамп файлы для dll - C++
Есть написанная dll. Ее подгружают разные процессы. Как включить для нее дампы, чтобы винда автоматически сохраняла их и я мог собрать .dmp...

Компилировать и объяснить код, получающий двоичный дамп программы - C++
Нашёл в книжке таких 2 примера: #include &lt;cstring&gt; #include &lt;iostream&gt; #define legal_psw &quot;my.good.password&quot; int main() { ...

Двоичный дамп short и char выводится как int - C++
Доброго дня! Пытаюсь выводить двоичный дамп переменных char, short и int вот таким образом: #include &lt;iostream&gt; using namespace...

Разработать программу позволяющую получить дамп памяти по адресу содержащему вводимые числа - C++
Разработать программу позволяющую получить дамп памяти по адресу содержащему вводимые числа. Программа должна предусматривать вывод...


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

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

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