Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

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

24.08.2013, 21:49. Показов 10091. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.08.2013, 21:49
Ответы с готовыми решениями:

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

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

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

23
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 21:53
Цитата Сообщение от ninja2 Посмотреть сообщение
Просто в с++ двоичной системы нету, мне нужно вывод делать в двоично системе.
std::bitset http://www.cplusplus.com/reference/bitset/bitset/
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 21:54  [ТС]
Nekto, Да ладно я знаю, я имел введу что нету манипулятора такого как hex или dec.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.08.2013, 21:55
Цитата Сообщение от ninja2 Посмотреть сообщение
как hex
std::hex есть
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
24.08.2013, 21:57
Цитата Сообщение от Jupiter Посмотреть сообщение
std::hex есть
и чо? Он об этом и говорит!
std::hex есть в отличие от std::bin
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 21:59  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
std::hex есть
Да есть, но дело не в том, нужно вообще понять что такое манипуляторы и как создавать свои собственные.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.08.2013, 22:01

Не по теме:

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



Цитата Сообщение от ninja2 Посмотреть сообщение
значит получается cout функцию принимает?
да.
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:04  [ТС]
От есть задачка: "Определите манипулятор вывода 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
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
24.08.2013, 22:05
Цитата Сообщение от ninja2 Посмотреть сообщение
Будет ли считаться манипулятором если я просто создам функцию и если я эту функцию просто вызову based(2,9); это и будет манипулятор правильно ж?
нет
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:08  [ТС]
Цитата Сообщение от 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
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
24.08.2013, 22:08
inline ios_base& my_manipulator(ios_base& b)
Что-то типа такого.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:16  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Например, based(2,9) должно вывести 1001.
Jupiter, Вот из этой строки можно вывод сделать что если я определю функцию void based(int,int) и вызову based(2,9) и она выведет 1001, значит она манипулятор. Если условие задачи внимательно почитать получается что функция и есть манипулятор ???

Добавлено через 3 минуты
Можно манипулятором считать функции которые меняют настройки потока, токо она не через там инструменты так сказать определенные манипуляторы потока изменила поток, а сама как бы вручную, то значит получается что она и есть манипулятор? Это имеется в веду void based(int,int);
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.08.2013, 22:17
Не знаю изменилось ли чего в C++11, но до него стандартного способа определить манипулятор с аргументами не было.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:19  [ТС]
grizlik78,
Цитата Сообщение от grizlik78 Посмотреть сообщение
Не знаю изменилось ли чего в C++11, но до него стандартного способа определить манипулятор с аргументами не было.
То есть четко сказать нельзя что это манипулятор, а это нет правильно ж? Тогда задачку решить не составляет труда, написать функцию да и все дела.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
24.08.2013, 22:19
ninja2, если охота писать вроде
C++
1
std::cout << bin << 42;
то ничего не получиться, по крайней мере без костылей.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.08.2013, 22:29
Цитата Сообщение от ninja2 Посмотреть сообщение
То есть четко сказать нельзя что это манипулятор, а это нет правильно ж?
Почему нельзя? Сказали же уже. Не манипулятор это. Манипулятор можно вставлять в потоки ввода и вывода с помощью операторов << и >>. А просто функция — это просто функция, пусть даже она изменяет настройки потока.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:40  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
Манипулятор можно вставлять в потоки ввода и вывода с помощью операторов << и >>. А просто функция — это просто функция, пусть даже она изменяет настройки потока.
А от смотри условие задачи: "Определите манипулятор вывода based, имеющий два аргумента — систему счисления и целое значение, и выводящий целое число в соответствии с указанной системой счисления. Например, based(2,9) должно вывести 1001."

Тут же видно что манипулятором называется функция based, значит получается что функции тоже бывают манипуляторами? Почему ты так думаешь, если в поток нельзя вставить, то значит не манипулятор?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.08.2013, 22:46
Ну в принципе, можно заставить based(2, 9) возвращать "1001" в виде std::string или указателя на какой-то статический буфер. Тогда даже в поток можно будет вставить. Но не знаю кто придумал называть это манипулятором. А конструкция based(2) << 9 для стандартного потока работать не будет.
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
24.08.2013, 22:50  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но не знаю кто придумал называть это манипулятором.
Это задачка из книги Страуструпа, так что можно верить, разве что перевод мог исказить смысл но наврятли, так что как есть так есть, под манипуляторами понимают видимо действие, а не конструкцию языка.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
24.08.2013, 22:50
Цитата Сообщение от grizlik78 Посмотреть сообщение
А конструкция based(2) << 9 для стандартного потока работать не будет.
Ну почему - пару костылей и все заработает)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.08.2013, 22:50
Помогаю со студенческими работами здесь

Setw() манипулятор
Проблема в том, что не могу разобраться как правильно отформатировать свою результат, хочу вывести значения, в виде таблицы. Вот код: ...

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

Манипулятор std::endl
Добрый день! Манипулятор std::endl - это некая глобальная функция, но почему она пишется без скобок и без параметров? Пример: ...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru