![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| S.A.G. |
|
||||||||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Для начала приведу цитату из Шилдта:
Выходит значения перечислимого типа fmtflags и есть флаги. Однако если объявить переменную типа fmtflags, она в любой момент времени будет содержать только одно значение из всех возможных. В классе ios должно быть такое объявление:
Существует функция-член этого же класса setf:
Она позволяет устанавливать флаги. Например, для установки флага showpos можно воспользоваться следующей инструкцией:
Здесь showpos представляет собой значение перечислимого типа. В зависимости от порядка следования в объявлении типа fmtflags эта константа будет иметь определенное значение целого типа. Если это и есть флаг то в чем состоит его установка? Что значит "установить флаг"? Если бы флаги представляли собой переменные булевого типа то никаких проблем с их пониманием бы не возникло. Непонятна также роль оператора ::. Это сообщение отредактировал(а) S.A.G. - 4.6.2007, 19:25 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
||||||||
|
|||||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Отредактировал изначальный вопрос.
vinter, ты сам себе противоречишь. Флаги это переменные? -> да; Где они объявлены? -> Эти маски объявлены в классе ios как данные перечислимого типа fmtflags; Выходит константы а не переменные. Это сообщение отредактировал(а) S.A.G. - 4.6.2007, 20:54 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
S.A.G., я так понимаю что если переменная равна 0, то она имеет вид, к примеру 00000000 00000000. Когда она равна 10, то 00000000 00001010, то есть "установлен" второй и четвертый по счету справа бит(флаг). Добавлено через 1 минуту и 17 секунд S.A.G., вот пример:
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
согласен, но я думаю ты понял что я имел ввиду для меня это одно и тоже, правда если константа, то это константная переменная, но все равно переменная |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Rockie, об установке битов я знаю. Я знаю что если бит равен 0 то он сброшен а если 1 то установлен..
Для меня тут непонятно другое. Если перечислимые константы тут и есть флаги то как они устанавливаються? Разве можно изменить значение константы? В функцию передается значение этой константы (флага). Что потом происходит с этим значением? В любом случае неважно как оно используется, используется значение! Это сообщение отредактировал(а) S.A.G. - 4.6.2007, 21:00 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
блин. проще на примере:
Это сообщение отредактировал(а) bsa - 4.6.2007, 21:06 |
||||
|
|||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Флаги это значения перечислимого типа fmtflags. Как они устанавливаются? bsa, что такое out и app? Это сообщение отредактировал(а) S.A.G. - 4.6.2007, 21:22 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Детский сад. Пример, как это сделано:
|
||||
|
|||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| S.A.G. |
|
||||||||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Комментарии про детсад оставьте для ваших коллег по саду. out и app это константы перечислимого типа, спасибо. :: тут используется для того чтобы можно было их использовать. . тут не прокатывает так как out и app не переменные. С :: ясно. Добавлено через 9 минут и 28 секунд
Сами флаги суть константы целого типа. В какую переменную сохраняются? Меня интересуют системные флаги формата а не отфонарные. -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
||||||||
|
|||||||||
| nickless |
|
||||||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Хочешь посмотреть как оно сделано? STL опенсурсная - открой да посмотри. Из bits/ios_base.h
T.e. комбинации флагов хранятся в том же enum-е. А в fstream-ах есть аттрибут типа basic_filebuf с аттрибутом
Это сообщение отредактировал(а) nickless - 4.6.2007, 23:11 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
||||||
|
|||||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
мда... Теория. Есть некая переменная в обекте. Флаги для объекта - это биты этой переменной. ios::showpos - это битовая маска, позволяющая установить определенные биты и setf просто применяет побитовую операцию с этой маской и в результате выставляются определенные биты. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Таааак. Значения перечислимого типа это не флаги а по сути дела вспомагательные константы с еденичками в определенных разрядах. А теперь финальный вопрос будет такой: как наз. переменная в которой все это дело комбинируется?
Выходит система каждый раз проверяет состояние битов в этой переменной прежде чем осуществить ввод/вывод в конкретный поток для которого установлены эти флаги. А если установить противоречивые флаги? Например сначала левое а потом правое выравнивание? Левое збросится после установки правого? И спасибо всем за помощь не смотря на то как она оказывалась. Это сообщение отредактировал(а) S.A.G. - 5.6.2007, 00:11 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Может для этого удобнее использовать bitset?
|
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
И в чем отрицательные эмоции? Я сделал неправильные выводы? Поправьте меня.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |