Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Флаги C++


Автор: IValdemar 12.2.2012, 19:51
Собственно возник вопрос:
Каким образом на С++ можно написать конструкцию, аналогичную 
Код

printf("%09d",number);

Можно ли это сделать как-то, используя cout.

Автор: rumit7 12.2.2012, 20:07
Цитата(IValdemar @ 12.2.2012,  19:51)
Собственно возник вопрос:
Каким образом на С++ можно написать конструкцию, аналогичную 
Код

printf("%09d",number);

Можно ли это сделать как-то, используя cout.

Вроде так:

Код

#include <iostream> 
#include <iomanip> 

int main()
{
  int number  = 2;
  std::cout << std::setfill('0');
  std::cout << std::setw ( 9 ) << number <<std::endl;
}



Вывод:

Цитата

000000002


Можно почитать http://www.arachnoid.com/cpptutor/student3.html или http://fem.grsu.by/Kafedry/MIOES/academic_process/OIiP_2s/Iostr_f.htm.

Автор: IValdemar 12.2.2012, 20:11
Большое спасибо! Именно то, что я искал smile 

Автор: volatile 12.2.2012, 20:13
2-ой способ
Код

#include <boost/format.hpp>
...
std::cout << boost::format("%09d\n") % number;

имитация принтфа
 smile 

Автор: boostcoder 12.2.2012, 20:20
Цитата(volatile @  12.2.2012,  20:13 Найти цитируемый пост)
имитация принтфа

boost.format с легкостью делает то, чего printf никогда не сможет. плюс еще тележка возможностей.

Автор: volatile 12.2.2012, 20:30
boostcoder, я что-нибудь плохого говорил про буст формат?

Автор: newbee 12.2.2012, 20:36
Цитата(boostcoder @  12.2.2012,  21:20 Найти цитируемый пост)
boost.format с легкостью делает то, чего printf никогда не сможет. плюс еще тележка возможностей.
Одна из которых - получение остатка от деления.

Автор: boostcoder 12.2.2012, 20:41
Цитата(newbee @  12.2.2012,  20:36 Найти цитируемый пост)
получение остатка от деления

это плейсхолдер. и никакой путаницы в случае с boost.format нет. просто доку читать нужно.
ты еще вспомни про поразрядный сдвиг.

Добавлено через 1 минуту и 16 секунд
volatile, сорри. что-то я недоспавший сегодня smile 

Автор: volatile 12.2.2012, 20:48
Цитата(boostcoder @  12.2.2012,  20:41 Найти цитируемый пост)
ты еще вспомни про поразрядный сдвиг.

ну вообще да.
Цитата(volatile @  12.2.2012,  20:13 Найти цитируемый пост)
std::cout << boost::format("%09d\n") % number;

здесь по-идее cout сдвигается влево на остаток от деления функции boost::format() на number
 smile

Автор: newbee 12.2.2012, 20:52
Цитата(boostcoder @  12.2.2012,  21:41 Найти цитируемый пост)
это плейсхолдер.
Кэп, вы сегодня на коне!

Цитата(boostcoder @  12.2.2012,  21:41 Найти цитируемый пост)
ты еще вспомни про поразрядный сдвиг.
Тоже идиотизм. С++-ная система вывода и форматирования вообще крайне ублюдочна в сравнении с ее сишным предшественником.

Автор: boostcoder 12.2.2012, 20:52
такова цена за перегрузку операторов.
но ИМХО, мне жава-код без этого напоминает сишный код.

Добавлено через 44 секунды
ы. как это у меня получилось два сообщения за раз отправить? оО

Добавлено через 2 минуты и 33 секунды
Цитата(newbee @  12.2.2012,  20:52 Найти цитируемый пост)
крайне ублюдочна

все вняли гласу разума, и пошли переписывать стандарт. молча.

Добавлено через 4 минуты и 17 секунд
newbee, не скатывайся до уровня некоторых персонажей. ведь все равно ничего не изменится. впустую троллишь.

Автор: boostcoder 12.2.2012, 20:52
такова цена за перегрузку операторов.
но ИМХО, мне жава-код без этого напоминает сишный код.

Автор: newbee 12.2.2012, 21:01
Цитата(boostcoder @  12.2.2012,  21:52 Найти цитируемый пост)
все вняли гласу разума, и пошли переписывать стандарт. молча.
Никто никуда не пойдет, все жрут, что дают. Кто-то делает свои поделки вроде буст-формата.

Автор: volatile 12.2.2012, 21:04
Цитата(newbee @  12.2.2012,  20:52 Найти цитируемый пост)
++-ная система вывода и форматирования вообще крайне ублюдочна в сравнении с ее сишным предшественником. 

увы это так. Но что-то нужно было сделать с принтфом. Потому-как он подрывал одну из основных идей С++, безопасностью типов.
Поставив себя на место страуструпа, согласитесь нужно было что-то придумать.
Ну и придумал cout, со сдвигом. Потом говорят раскаивался, но поезд уже ушел.

Автор: boostcoder 12.2.2012, 21:06
Цитата(newbee @  12.2.2012,  21:01 Найти цитируемый пост)
Никто никуда не пойдет

вот и я о том же. к чему пустословить? не солидно же.

Автор: newbee 12.2.2012, 21:10
Цитата(volatile @  12.2.2012,  22:04 Найти цитируемый пост)
согласитесь нужно было что-то придумать.
Я не спорю, страсу вообще много нужно было придумать :facepalm, не знаю раскаялся ли он, но поезд уже и правда ушел. Вообще перегруженный сдвиг - меньшая из причин не пользоваться стримами.

Автор: boostcoder 12.2.2012, 21:14
Цитата(newbee @  12.2.2012,  21:10 Найти цитируемый пост)
раскаялся ли он

в чем? в том что большинство предпочитают ЯП вроде пайтона/жавы/лисп? - каждому свое smile 

Автор: newbee 12.2.2012, 21:28
Цитата(boostcoder @  12.2.2012,  22:14 Найти цитируемый пост)
в чем? в том что большинство предпочитают ЯП вроде пайтона/жавы/лисп? - каждому свое
 Предпочтения и реальные достоинства тех или иных вещей, в частности языков, вообще очень слабо связаны.

Автор: mes 12.2.2012, 23:58
Цитата(volatile @  12.2.2012,  20:04 Найти цитируемый пост)
Поставив себя на место страуструпа, согласитесь нужно было что-то придумать.
Ну и придумал cout, со сдвигом. Потом говорят раскаивался, но поезд уже ушел. 

а какое отношение к сдвигу в потоках имеет Стауструп ?!
а тот, кто имеет расскаивался не из за использования оператора, а за то что инстумент вышел не очень удобный..

Добавлено через 1 минуту и 11 секунд
Цитата(newbee @  12.2.2012,  20:10 Найти цитируемый пост)
 Вообще перегруженный сдвиг - меньшая из причин не пользоваться стримами. 

вот здесь абсолютно согласен  smile

Автор: volatile 13.2.2012, 00:19
Цитата(mes @  12.2.2012,  23:58 Найти цитируемый пост)
а какое отношение к сдвигу в потоках имеет Стауструп ?!
а тот, кто имеет расскаивался не из за использования оператора, а за то что инстумент вышел не очень удобный..

mes, кто именно? я не очень хорошо знаю историю создания С++.

Анализировать что там именно неудобно, не будем. Оно все в корне не удобно.

Добавлено @ 00:31
Цитата(volatile @  13.2.2012,  00:19 Найти цитируемый пост)
я не очень хорошо знаю историю создания С++.

У меня просто есть старая книжка страуса, года так 198* какого-то. СТЛ там еще и не пахнет, вообще. А cout уже есть, и Страус там пишет что типа "мы" это придумали. Кто мы не уточняется.

Автор: mes 13.2.2012, 01:06
Цитата(volatile @  12.2.2012,  23:19 Найти цитируемый пост)
, кто именно? я не очень хорошо знаю историю создания С++.

я  тоже не очень, но созданием стл, еще задолго до того как она обрела свои принятые стандартом очертания, занимался http://en.wikipedia.org/wiki/Alexander_Stepanov.. При этом влияя на  развитие языка, без изменений которого, стл бы была бы просто не возможна smile

Автор: volatile 13.2.2012, 01:15
Цитата(mes @  13.2.2012,  01:06 Найти цитируемый пост)
занимался Степанов .. 

Ну Степанов то вряд-ли придума cout
Цитата

Alexander Alexandrovich Stepanov (Russian: Александр Александрович Степанов) (born November 16, 1950 in Moscow) is the primary designer and implementer of the C++ Standard Template Library,[1] which he started to develop around 1992 

Начал в 1992. 
Книжка с cout  от Страуструпа за 1988 год.

Ну да ладно, не суть важно. smile 

Автор: boostcoder 13.2.2012, 01:15
стримы я впервые увидел в борланд турбо Си или С++. году, эдак, в 98..

Автор: mes 13.2.2012, 01:15
Его мнение по яве и ей подобным : 
Цитата


Question:
This mean a radical change of mind from both imperative and OO thinking. What are the benefits, and the drawbacks, of this paradigm compared to the "standard" OO programming of SmallTalk or, say, Java? 

Answer:
My approach works, theirs does not work.[B] Try to implement a simple thing in the object oriented way, say, max.
 I do not know how it can be done. Using generic programming I can write:
template <class StrictWeakOrdered>
inline StrictWeakOrdered& max(StrictWeakOrdered& x,
StrictWeakOrdered& y) {
return x < y ? y : x;
}

and
template <class StrictWeakOrdered>
inline const StrictWeakOrdered& max(const StrictWeakOrdered& x,
const StrictWeakOrdered& y) {
return x < y ? y : x;
}
(you do need both & and const &). And then I define what strict weak ordered means. Try doing it in Java. You can't write a generic max() in Java that takes two arguments of some type and has a return value of that same type. Inheritance and interfaces don't help. And if they cannot implement max or swap or linear search, what chances do they have to implement really complex stuff? These are my litmus tests: if a language allows me to implement max and swap and linear search generically - then it has some potential. [/B]


http://www.stlport.org/resources/StepanovUSA.html


Автор: Modul 13.2.2012, 01:21
Это супер большая проблема.

Да, куда катится мир.  smile 

В никуда, особенно в среде it-шникоффф.

Парни, не забываем - горе от ума. @ Грибоедов Александр Сергеевич

Автор: mes 13.2.2012, 01:25
Цитата(volatile @  13.2.2012,  00:15 Найти цитируемый пост)

Начал в 1992. 
Книжка с cout  от Страуструпа за 1988 год.

начал он вроде в 87, но не мог многое реализовать, из за чегореализация стл была отложена.. 

Автор: boostcoder 13.2.2012, 01:41
Цитата(boostcoder @  13.2.2012,  01:15 Найти цитируемый пост)
в 98

неее. в 96.
но сам компилятор, по моему, 92го года.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)