форматирование в cout

Тема в разделе "LANGS.C", создана пользователем wsd, 15 авг 2009.

  1. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Код (Text):
    1. #define IMAGE_NT_SIGNATURE                  0x00004550
    2. cout << cout.hex << IMAGE_NT_SIGNATURE << endl;
    выводит 204817744 :dntknw:
    какая-то наверно глупая ошибка с недосыпа :)
     
  2. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Код (Text):
    1.     #define IMAGE_NT_SIGNATURE  0x00004550
    2.     std::cout << std::hex << std::setfill('0') << std::setw(8);
    3.    
    4.     std::cout << IMAGE_NT_SIGNATURE << std::endl;
    5.     std::cout << ~IMAGE_NT_SIGNATURE << std::endl;
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    W4FhLF
    студия 2008
    не могу пойти спать пока не доделаю :)
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    W4FhLF
    в cout таких методов тоже нет :dntknw:
    а может в 2008 это кастрировали? ты в чём пишеш?
     
  5. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    #include <iomanip>

    На будущее:
    http://www.cplusplus.com/reference/iostream/manipulators/
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    W4FhLF
    спасибо :)
    столько гемора для вывода простого ULONG ..
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    wsd
    Напиши на ассемблере.
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Booster
    не это крайности :)
    сложно так им что-ли было просто перегрузить по нормальному оператор для улонга ?
    и я ещё не понял что в первоначальном варианте 204817744 означало ?
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    wsd
    Перегрузить для 16-ричного вывода?
     
  10. nop_

    nop_ New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2007
    Сообщения:
    61
    В С++ можно делать так:

    Код (Text):
    1. struct A
    2. {
    3.   enum {zero};
    4.   static const int one = 1;
    5.   static int two() { return 2}
    6. };
    7.  
    8. int main()
    9. {
    10.   A a;
    11.    
    12.   int v1 = a.zero;
    13.   int v2 = a.one;
    14.   int v3 = a.two();
    15. }
    В качестве 'id-expression' в выражении доступа к члену класса (по указателю в том числе) могут быть использованы любые (формирующие валидное выражение) члены, которые прямо и или косвенно содержит класс.

    Поэтому здесь:
    Код (Text):
    1. #define IMAGE_NT_SIGNATURE                  0x00004550
    2. cout << cout.hex << IMAGE_NT_SIGNATURE << endl;
    сначала было напечатано численное значение манипулятора std::hex - 2048, а потом число 0x00004550 в десятичной системе счисления - 17744.
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Booster
    конечно нет, не обощай так :)) для вывода лонга
    что означает в первом посте 204817744 ?
     
  12. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    nop_
    ясно, опередил
     
  13. nop_

    nop_ New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2007
    Сообщения:
    61
    Опечатался. Не "манипулятора std::hex", а значение флага std::ios_base::hex.
     
  14. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    W4FhLF
    тут доки ещё поизучал :)
    возник вопрос : что лучше, твои манипуляторы или компонентныи функции ios
    int width( int) и char fill( char)
    как это делать более правильно?
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    nop_
    спасибо!
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    std::cout << std::hex << IMAGE_NT_SIGNATURE << std::endl;
     
  17. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Booster
    мы тут выше уже это исправили
     
  18. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Booster
    на счёт 14 поста что считаеш?
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    wsd
    По производительности? Всё одинаково.
     
  20. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Booster
    а по стилю?