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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форматированный вывод std::cout 
V
    Опции темы
konshyn
Дата 2.6.2014, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Привет.
Кто знает, как можно сделать эквивалент 
Код

printf("%.2X", c);

с помощью cout в C++??



--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Romikgy
Дата 2.6.2014, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



X это хекс  (cout<<hex<<c;), а что обозначает .2 ????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
konshyn
Дата 2.6.2014, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Romikgy @  2.6.2014,  11:37 Найти цитируемый пост)
X это хекс  (cout<<hex<<c;), а что обозначает .2 ???? 

2 означает, что я буду выводить по два знака.
например
Код

char buffer[10] = {0, 1, 15, 20, 10};
for( ; ; )
 printf("%.2X ", buffer[i++])

вывод будет таким:
Цитата

00 01 0F 14 0A ...



--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Romikgy
Дата 2.6.2014, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

const char b2h[]="0123456789ABCDEF";
char buffer[10] = {0, 1, 15, 20, 10};
for( ; ; )
cout<<b2h[(buffer[i]>>4)&0xf]<<b2h[buffer[i]&0xf]<<" ";



Это сообщение отредактировал(а) Romikgy - 2.6.2014, 11:56


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
konshyn
Дата 2.6.2014, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Romikgy, Оригинально smile


--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
LeonidPr
Дата 2.6.2014, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

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



можно так еще
Код

    cout.width(2);
    cout.fill('0');
    cout<<uppercase<<hex<<15;

--------------------
pkunzip.zip
PM MAIL   Вверх
baldina
Дата 2.6.2014, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

cout << setfill('0') << setw(2) << hex << uppercase << c;

PM MAIL   Вверх
borisbn
Дата 2.6.2014, 13:41 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Рискую получить по ушам, но это
Цитата(baldina @  2.6.2014,  13:21 Найти цитируемый пост)
cout << setfill('0') << setw(2) << hex << uppercase << c;

ИМХО  smile  smile  smile 

Ведь было так просто...
Цитата(konshyn @  2.6.2014,  11:34 Найти цитируемый пост)
printf("%.2X", c);


Добавлено через 59 секунд
Уважаемый konshyn, зачем Вам это нужно ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
konshyn
Дата 2.6.2014, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(baldina @ 2.6.2014,  13:21)
Код

cout << setfill('0') << setw(2) << hex << uppercase << c;

То, что нужно (y). Спасибо

Добавлено через 2 минуты и 9 секунд
Цитата(borisbn @  2.6.2014,  13:41 Найти цитируемый пост)
Уважаемый konshyn, зачем Вам это нужно ? 

Для эстетического вида кода и для своего удовольствия и знаний.


--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
borisbn
Дата 2.6.2014, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(konshyn @  2.6.2014,  13:49 Найти цитируемый пост)
Для эстетического вида кода

Это:
Код
std::cout << std::setfill('0') << std::setw(2) << std::hex << std::uppercase << c;

выглядит более эстетично, чем это:
Код
printf( "%02X", c );

???
Цитата(konshyn @  2.6.2014,  13:49 Найти цитируемый пост)
для своего удовольствия

Хмм... писать же на порядок больше...
Цитата(konshyn @  2.6.2014,  13:49 Найти цитируемый пост)
и знаний

Вот, пожалуй, единственное объяснение  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
konshyn
Дата 2.6.2014, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(borisbn @  2.6.2014,  14:09 Найти цитируемый пост)
выглядит более эстетично, чем это:

Мне доставляет неимоверное удовольствие такие конструкции. Как что-то непонятное и загадочное smile
И там, где кроме меня никто смотреть этот код не будет, пишу такие штуки. А с переходом с Си на С++ писать такое - одно удовольствие!


--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Lukkoye
Дата 2.6.2014, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(borisbn @  2.6.2014,  14:09 Найти цитируемый пост)
???


ага. Проще понять. Читабельнее.


PM MAIL   Вверх
baldina
Дата 2.6.2014, 22:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



я бы согласился с borisbn, iomanip не слишком изящен, printf гораздо лаконичнее и удобнее.
удобство формата в стиле printf и типизация совмещается в  boost::format
PM MAIL   Вверх
xvr
Дата 18.6.2014, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Пожалуй единственный недостаток вывода a-la printf - это то, что формат интерпретируется run-time (iostream это делает в compile-time), но IMHO это не компенсирует многократное увеличение писанины в коде  smile 
PM MAIL   Вверх
NoviceF
Дата 23.6.2014, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

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



Цитата(xvr @ 18.6.2014,  15:14)
Пожалуй единственный недостаток вывода a-la printf - это то, что формат интерпретируется run-time (iostream это делает в compile-time), но IMHO это не компенсирует многократное увеличение писанины в коде  smile

А в 11 плюсах разве не переделали на printf через variadic templates?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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