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

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

24.08.2013, 21:49. Показов 10111. Ответов 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
2383 / 1667 / 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
2383 / 1667 / 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
2383 / 1667 / 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 / 3206 / 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
Ответ Создать тему
Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru