Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некоторые понятия из документации 
:(
    Опции темы
hoz
Дата 25.7.2013, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



 Думаю, не только у меня возникают сложности с пониманием документации, написанной на английском. Создал этот топик, чтоб задавать иногда вопросы, касающиеся данной темы.
Bitmask - я так понял, это маска (размером с бит?), т.е. информация, которая добавляется в поток, чтоб изменить некоторые его свойства. Например, отформатировать входной/ выходной поток. Я верно понимаю?

Тут я вот смотрю, есть как member functions: так и member types:
Это значит классы-функции и классы-типов?
PM MAIL   Вверх
EgoBrain
Дата 25.7.2013, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Цитата(hoz @  25.7.2013,  00:53 Найти цитируемый пост)
Думаю, не только у меня возникают сложности с пониманием документации, написанной на английском.
Bitmask - я так понял, это маска (размером с бит?), т.е. информация, которая добавляется в поток, чтоб изменить некоторые его свойства. Например, отформатировать входной/ выходной поток. Я верно понимаю?

Вся инофрмация доступна в сети - раз. Изучать нужно последовательно, лучше из спец. пособий - два.
bitmask
Маска не размером с бит, размером с бит - флаг. Допустим есть байт, который представляет маску, каждый бит этого байта - флаг, определящий опцию (0 - опция вкл., 1 - выкл.).
Ты задаешь маску побитовой операцией | (ИЛИ): хочу чтобы была включена вторая и четвертая опция
Код

mask = 0100 0000 | 0001 0000
.
Лучше прочитай smile

Цитата(hoz @  25.7.2013,  00:53 Найти цитируемый пост)

member functions

Функции-члены, методы класса (функции) реализующие управление данными (инкапсуляция) и прочее.

Цитата(hoz @  25.7.2013,  00:53 Найти цитируемый пост)

member type

Наверное, имеется ввиду тип члена класса (поля, возможно функции).
PM MAIL ICQ Skype   Вверх
hoz
Дата 25.7.2013, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(EgoBrain @  25.7.2013,  01:39 Найти цитируемый пост)
Наверное, имеется ввиду тип члена класса (поля, возможно функции).

Вот именно, что наверное,.. smile  Я потому и спросил, чтоб уточнить. То что каждое слово означает и так понятно, но целостная суть не совсем.
Тип члена класса, это как? smile 

Это сообщение отредактировал(а) hoz - 25.7.2013, 11:50
PM MAIL   Вверх
baldina
Дата 25.7.2013, 13:43 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(hoz @  25.7.2013,  11:49 Найти цитируемый пост)
Тип члена класса, это как?  

это типы-члены классов, т.е. типы объявленные в классе
Код

struct foo {
  typedef int bar; // bar тип,  объявленный в классе foo
};

// using:

foo::bar var;


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

template <typename T, size_t N>
struct array {
  typedef T value_type; // member type
  value_type data[N];
  value_type& get(size_t index) { return data[index]; }
};


PM MAIL   Вверх
hoz
Дата 31.7.2013, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Что означает fill characters ? Читаю документацию тут
Возник вопрос, что означает данная фраза в данном контексте?
Цитата

 is padded with fill characters at a point determined by the format flag adjustfield (one of left, right or internal). 

PM MAIL   Вверх
bsa
Дата 31.7.2013, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



hoz, 'fill' - заполнять, 'character' - символ. "fill characters" = "символы заполнения".
PM   Вверх
hoz
  Дата 2.8.2013, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Объясните, пожалуйста, причину использованию метода класса setw. 
Цитата

Например, setw()15 означает, что следующая выходная величина будет напечатана с шириной (размером) поля 15, т.е. её значение будет содержать по крайне мере 15 символьных позиции. Если длина выходной величины менее 15 символов, она по умолчанию будет выровнена  в поле по правому символу. Если длина выходной величина более 3, размер поля будет увеличен, чтобы вместить полную величину.

В документации же об этом не сказано, что по умолчанию выводная величина будет выравниваться по правой стороне.
Зачем вообще нужен данный оператор, если можно было просто напечатать величину и всё? Мне непонятен смысл данного метода-класса (функции), как такового. Кажется, что она бесполезна. Потому интересно мнение опытных программистов. Потихоньку помаленьку въезжаю  smile 
PM MAIL   Вверх
feodorv
Дата 2.8.2013, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(hoz @  2.8.2013,  01:17 Найти цитируемый пост)
Зачем вообще нужен данный оператор

А красиво напечатать на экран? Чтобы всё было выравнено по левому или правому краю?
И не оператор это, даже написано:
Цитата
function std::setw




--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
hoz
Дата 2.8.2013, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(feodorv @  2.8.2013,  00:41 Найти цитируемый пост)
И не оператор это, даже написано:

Кстати, опять же. Есть 2 варианта для достижения данного результата:
Функция параметрического манипулятора <iomanip> -  function std::setw.
Метод класса <ios> - public member function std::ios_base::width
Есть какие-либо различия в выборе того или иного варианта?
Пытаюсь попутно прочтению книги капаться и въезжать в структуру документации, вот и спрашиваю.
PM MAIL   Вверх
bsa
Дата 2.8.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



все зависит от способа использования. если тебе все надо выводить выровненным по 15 символам, то удобнее установить свойство потока, а если только один элемент - то использовать манипулятор.
PM   Вверх
hoz
Дата 2.8.2013, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(bsa @  2.8.2013,  10:35 Найти цитируемый пост)
если тебе все надо выводить выровненным по 15 символам

Т.е. получается, что данный поток выравнивается (равномерно распределяется) по ширине 15 символов последующего вывода?

Это сообщение отредактировал(а) hoz - 2.8.2013, 11:42
PM MAIL   Вверх
bsa
Дата 2.8.2013, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



hoz, я тебя не понял. когда ты ставишь ширину 5, то каждый вывод выравнивается на 5 символов. 
Код
cout.setw(5);
cout << 0 << "and" << endl;
Т.е. вместо "0" ты увидишь "    0", вместо "and" увидишь "  and" и так далее:
Код
    0  and

Каждый выводимый элемент будет выровнен по этой ширине.

Добавлено через 50 секунд
Другими словами, это удобно для рисования таблиц с единой шириной столбцов.
PM   Вверх
hoz
Дата 11.8.2013, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



 После некоторого отдыха я снова здесь smile 
bsa, что-то не совсем так. Тут у меня вышло вообще не выравнивание, а тупо отступ с права и всё, и то после 0, а следующее вводимое значение уже не отступает на столько же.
Вот что я проверял:
Код

#include <iostream.h>
#include <iomanip.h>

int main()
{
    cout << setw(0);
    cout << 0 << " andOS" << endl;
    cout << setw(1);
    cout << 0 << " andOS" << endl;
    cout << setw(2);
    cout << 0 << " andOS" << endl;
    cout << setw(3);
    cout << 0 << " andOS" << endl;
    cout << setw(4);
    cout << 0 << " andOS" << endl;
    cout << setw(5);
    cout << 0 << " andOS" << endl;
    cout << setw(15);
    cout << 0 << " andOS" << endl;

    return 0;
}

Выводит: (всё где значение field width больше 1 печатается с отступом соответствующим же значение field width)
Вот что на выходе:
Код

0 andOS
0 andOS
 0 andOS
  0 andOS
   0 andOS
    0 andOS
              0 andOS


Это сообщение отредактировал(а) hoz - 11.8.2013, 15:46
PM MAIL   Вверх
feodorv
Дата 11.8.2013, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



А если так напечатать:
Код

#include <iostream.h>
#include <iomanip.h>

int main()
{
    cout << setw(15);
    cout << 1 << " andOS" << endl;
    cout << setw(15);
    cout << 10 << " andOS" << endl;
    cout << setw(15);
    cout << 100 << " andOS" << endl;
    cout << setw(15);
    cout << 1000 << " andOS" << endl;
    cout << setw(15);
    cout << 10000 << " andOS" << endl;
    cout << setw(15);
    cout << 100000 << " andOS" << endl;
    cout << setw(15);
    cout << 1000000 << " andOS" << endl;
    return 0;
}



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
hoz
Дата 11.8.2013, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



feodorv, ну и как это понять? Тут уже по правой стороне всё выравнивается, а там наоборот. Нонсенс какой-то.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.