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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Собственный манипулятор - C++

24.08.2013, 21:49. Просмотров 2162. Ответов 23
Метки нет (Все метки)

Здорова господа!

Я пытаюсь создать свой собственный манипулятор, который будет принимать основу числа: десять шестнадцать и два и само число, и будет выводить число в соотсветствующей системе счисления.

От я набраса примерно манипулятор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//манипулятор вывода
ostream& based(ostream& stream)
{
    cout <<"mu tyt"<<endl;
    return stream;
}
 
int main()
{
    cout <<based;
 
    return 0;
}
от в этой строчке не сильно понятно что происходит cout <<based; ??? это равносильно cout.operator<<(based); как такое может быть? based это ж функция и что у нас он принимает походу указатель на функция, если я не ошибаюсь, точно не помню, имя функции это и есть указатель на функцию, значит получается cout функцию принимает?

Мне вообщето нужно написать токой based который бы принимал бы два инт аргумента и выводил число в соответствующей системе счисления, если я определю такую функцию, то я ее так вызвать не могу cout <<based(2,9); допустим, потому что ошибка, я могу ее просто вызвать как функцию.

От интересно будет ли такая функция считаться манипулятором или то что выше в коде манипулятора, а если функция то это будет просто функция????? Просто в с++ двоичной системы нету, мне нужно вывод делать в двоично системе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 21:49     Собственный манипулятор
Посмотрите здесь:

Как передать параметр в собственный манипулятор с параметром? - C++
Ребята, вопрос, вот задача: Создать манипулятор endp(n), задающим условие перехода на новую страницу: если счетчик строк в ...

Манипулятор ws - C++
Собственно вопрос в следующем: может ли кто-то показать, как использовать манипулятор ws. Он, если я правильно понял, должен пробелы...

Определить манипулятор - C++
Что-то часто я тут начал писать... Но тем не менее... Задание определить манипулятор, который игнорирует все запятые и точки до конца...

Написать свой манипулятор - C++
Здравствуйте, подскажите пожалуйста, как для класса A, написать свой манипулятор, который вызвал бы функцию класса? Чтобы манипулятор мог...

Символ '\n' и манипулятор endl - C++
Встретил в одной книге вот такое выражение (дословно): Если операционная система не использует буферизацию вывода, то между символом...

Создайте манипулятор вывода - C++
Помогите срочно решить задачу Создайте манипулятор вывода sethex(), который осуществляет вывод в шестнадцатеричной системе счисления и...

Манипулятор ввода / вывода - C++
Чем отличается манипулятор ввода\вывода от пользовательский ввод\вывод ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
24.08.2013, 23:17     Собственный манипулятор #21
Цитата Сообщение от ninja2 Посмотреть сообщение
Это задачка из книги Страуструпа
Старуструп тот ещё придумщик. Он, кстати, говорит о полноценных манипуляторах, вставляемых в поток. И даже рассказывает как создавать манипуляторы с параметрами. Одна беда — стандартного способа нет, он зависит от реализации библиотеки, но это я уже говорил.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 23:41  [ТС]     Собственный манипулятор #22
Цитата Сообщение от grizlik78 Посмотреть сообщение
Он, кстати, говорит о полноценных манипуляторах, вставляемых в поток.
Не помню я сразу 7 глав СТЛ месяца 4 назад прочитал, щас от задачки все никак не дорешаю. Главу то я просмотрел перед тем как ее задачи решать, но там много информации, что фиг его знает на чем внимание акцентировать все все рамно не запомнить, хоть бери и заново читай, эту главу что я читал что не читал.

Добавлено через 5 минут
Мне от кажется, что я его некогда не дочитаю, я уже 800 страниц прочитал, там 4 главы осталось и приложения, да конец самый тяжелый.
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
25.08.2013, 00:09     Собственный манипулятор #23
мб тут чтот будет понятно
Миниатюры
Собственный манипулятор   Собственный манипулятор   Собственный манипулятор  

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 20:22     Собственный манипулятор
Еще ссылки по теме:

Не работает манипулятор setw(n) - C++
Здравствуйте, написал маленькую программку по разделу из книги, чтобы лучше понять как работает манипулятор setw(n), однако при компиляции...

Не работает самописный манипулятор вывода - C++
#include &lt;iostream&gt; #include &lt;bitset&gt; using namespace std; ostream&amp; bin(ostream&amp; stream, int&amp; num) { stream &lt;&lt;...

Как использовать манипулятор flush в консольном приложении с++ - C++
Подскажите как пользоватся данный манипулятором в библеотеке iostream, и за что он отвечает.

Показать на примере, как использовать манипулятор std::ws класса istream - C++
Здравствуйте, уважаемые форумчане! Пожалуйста, объясните и, если можно, покажите на примере, как использовать манипулятор std::ws класса...

Манипулятор ввода, который поочередно то считывает, то пропускает каждые десять символов - C++
Задание звучит так: Вот что я уже сделал: istream&amp; skipchar(istream&amp; stream) { for (int i = 0; i &lt; 10; i++) { ...


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

Или воспользуйтесь поиском по форуму:
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.08.2013, 20:22  [ТС]     Собственный манипулятор #24
В общем прочитал раздельчик про манипуляторы и там написано от что, манипуляторы это функции манипуляторы, можно записать отак:
C++
1
2
3
4
5
cout <<x;
cout.flush();
cout <<y;
cin.unsetf(ios_base::skipws);
cin >>x;
Такая запись затрудняет понимание кода, поетому применяют манипуляторы которые можно вставить в << отак:
C++
1
2
cout <<x<<flush()<<y;
cin >>noskipws>>x;
Так просто код понятней становится, ну и для создания пользовательских манипуляторов, нужно от по такой схеме их создавать, в книге так советуют создавать:
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
43
44
45
46
47
48
49
50
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
using std::dec;
using std::hex;
#include <sstream>
using std::ostringstream;
 
void natob (int n, ostringstream& ost)
{
    if (n>1)
    natob(n/2,ost);
    ost<<n%2;
}
 
class based;
 
struct based_manip
{
    based& b;
    int oc;
    int val;
    based_manip(based& a,int b, int c):b(a),oc(b),val(c){}
};
 
class based
{
    friend ostream& operator<<(ostream& os, based_manip bm);
public:
    based_manip& operator()(int a, int b){return based_manip(*this,a,b);}
 
};
 
ostream& operator<<(ostream& os, based_manip bm)
{
    ostringstream ost;
    if(bm.oc==2) natob(bm.val,ost);
    else if(bm.oc==10) ost <<dec<<bm.val;
    else if(bm.oc==16) ost <<hex<<bm.val;
    return os <<ost.str();
}
 
int main()
{
    based based1;
    cout <<based1(2,9)<<endl;
 
    return 0;
}
В общем так от делать, код конечно запутанный и многие новички не разберут что тут происходит, кто не разберет , то можно просто как товарищ grizlik78, советовал из функции вернуть строку и можно так же как я просто все в поток закинуть через функцию, в общем результат один и тот же, так что получается свой манипулятор тема не актуальная.
Yandex
Объявления
26.08.2013, 20:22     Собственный манипулятор
Ответ Создать тему
Опции темы

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