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

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

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

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

24.08.2013, 21:49. Просмотров 2404. Ответов 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); допустим, потому что ошибка, я могу ее просто вызвать как функцию.

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

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

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

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

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

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

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

23
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 21:53 #2
Цитата Сообщение от ninja2 Посмотреть сообщение
Просто в с++ двоичной системы нету, мне нужно вывод делать в двоично системе.
std::bitset http://www.cplusplus.com/reference/bitset/bitset/
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 21:54  [ТС] #3
Nekto, Да ладно я знаю, я имел введу что нету манипулятора такого как hex или dec.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.08.2013, 21:55 #4
Цитата Сообщение от ninja2 Посмотреть сообщение
как hex
std::hex есть
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
24.08.2013, 21:57 #5
Цитата Сообщение от Jupiter Посмотреть сообщение
std::hex есть
и чо? Он об этом и говорит!
std::hex есть в отличие от std::bin
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 21:59  [ТС] #6
Цитата Сообщение от Jupiter Посмотреть сообщение
std::hex есть
Да есть, но дело не в том, нужно вообще понять что такое манипуляторы и как создавать свои собственные.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.08.2013, 22:01 #7

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
я имел введу что нету манипулятора такого как hex или dec.
а как это понимать?



Цитата Сообщение от ninja2 Посмотреть сообщение
значит получается cout функцию принимает?
да.
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 22:04  [ТС] #8
От есть задачка: "Определите манипулятор вывода based, имеющий два аргумента — систему счисления и целое значение, и выводящий целое число в соответствии с указанной системой счисления. Например, based(2,9) должно вывести 1001."
Будет ли считаться манипулятором если я просто создам функцию
C++
1
2
3
4
5
6
void based(int a int n)
{
if(a==2) //вывод в двоичной системе
else if(a==16) //вывод в 16
else if(a==10)// вывод в 10
}
и если я эту функцию просто вызову based(2,9); это и будет манипулятор правильно ж?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
а как это понимать?
я буду просто свою функцию вызывать если основа будет два
C++
1
2
3
4
5
6
void natob (int n)
{
    if (n>1) 
    natob(n/2);
    cout<<n%2;
}
если 16 то cout <<hex<<число;
если 10 то cout <<dec<<число;
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.08.2013, 22:05 #9
Цитата Сообщение от ninja2 Посмотреть сообщение
Будет ли считаться манипулятором если я просто создам функцию и если я эту функцию просто вызову based(2,9); это и будет манипулятор правильно ж?
нет
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 22:08  [ТС] #10
Цитата Сообщение от Jupiter Посмотреть сообщение
нет
А если такая функция будет:
C++
1
2
3
4
5
6
7
8
ostream& based(ostream& stream, int a, int n)
{
    if(a==2) //вызываем собственную функцию
        else if(a==10)cout<<dec<<n;
        else if(a==16)cout<<hex<<n;
 
    return stream;
}
И если я ее уже вызову отак
based(cout,2,9); то это тоже не манипулятор????
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 22:08 #11
inline ios_base& my_manipulator(ios_base& b)
Что-то типа такого.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 22:16  [ТС] #12
Цитата Сообщение от ninja2 Посмотреть сообщение
Например, based(2,9) должно вывести 1001.
Jupiter, Вот из этой строки можно вывод сделать что если я определю функцию void based(int,int) и вызову based(2,9) и она выведет 1001, значит она манипулятор. Если условие задачи внимательно почитать получается что функция и есть манипулятор ???

Добавлено через 3 минуты
Можно манипулятором считать функции которые меняют настройки потока, токо она не через там инструменты так сказать определенные манипуляторы потока изменила поток, а сама как бы вручную, то значит получается что она и есть манипулятор? Это имеется в веду void based(int,int);
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
24.08.2013, 22:17 #13
Не знаю изменилось ли чего в C++11, но до него стандартного способа определить манипулятор с аргументами не было.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.08.2013, 22:19  [ТС] #14
grizlik78,
Цитата Сообщение от grizlik78 Посмотреть сообщение
Не знаю изменилось ли чего в C++11, но до него стандартного способа определить манипулятор с аргументами не было.
То есть четко сказать нельзя что это манипулятор, а это нет правильно ж? Тогда задачку решить не составляет труда, написать функцию да и все дела.
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
24.08.2013, 22:19 #15
ninja2, если охота писать вроде
C++
1
std::cout << bin << 42;
то ничего не получиться, по крайней мере без костылей.
0
24.08.2013, 22:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 22:19
Привет! Вот еще темы с ответами:

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

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

Как создать манипулятор с параметрами? - C++
Манипулятор без параметров создать то просто //g++ 5.4.0 #include &lt;iostream&gt; std::ostream&amp; addok (std::ostream&amp; os) { ...

Что делает манипулятор flush? - C++
Доброго времени суток! Не могу толком разобраться, что делает манипулятор flush.Нужен простой пример в коде, как работает flush,...


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

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

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