В разных языках может быть разная последовательность. Поэтому даже чистый printf задачу не решит, не говоря уже про cout << msgs.get (cat, 1, CODE1, def) << i << msgs.get (cat, 1, CODE2, def) << n;
Строка «item %1 of %2» может превратиться в строку «%2 %1 jskj rgfgfd fv dfvdv»
Поэтому и должно быть полное разделение задачи перевода строк и задачи вводы-вывода.
«я признаю, что твой вариант в этом случае более удобный, краткий и все такое.» - так это был сарказм такой? на самом деле ты до сих пор считаешь, что твой вариант лучше, да?
Там же, где и в исходном примере показаны «преимущества» потоков перед printf'ом, то есть нигде. А вот недостаток, который несет эта мнимая «простота» потоков я привел.
Все ошибки выявляет компилятор. Нет возможности вывести в поток- не будет откомпилирована программа. А с printf всё будет известно только в процессе работы программы.
правильно, потому что компилятор просто щаставили изучать строку формата, чтобы было меньше ошибок. Хоть это и не дело компилятора абсолютно. К синтаксису языка это не имеет отношения. И если это скрыть в функции-посреднике, то компилятор ничего не сможет сказать.
printf is a function that takes a variable number of arguments, the first argument being a format string explaining how to treat further arguments. cout is an object of the std::ostream class. The two are completely different in form, yet the result is the same, data sent to stdout.
This question is difficult to answer completely as often phrased since cout and printf are wildly different, but most often one of three questions are meant:
* Q: "Which is faster?" A: printf, but the difference is too slight to worry about.
* Q: "Which is better?" A: Neither, it depends heavily on personal preference and what needs to be done.
* Q: "Which should I use?" A: You should use whichever you feel most comfortable with.
It is preferred that you use iostreams with C++ instead of the C functions because iostreams are type safe and extensible for user defined types, both of which are very good reasons.
http://www.boost.org/doc/libs/1_42_0/libs/format/index.html
Это также и решает ранее упомянутую задачу с переводом на другие языки, когда может быть другая последовательность аргументов. printf на это не способен. А Boost Format такое может, так как лишь обращается по номерам в строке форматирования.
> Это также и решает ранее упомянутую задачу с переводом на другие языки, когда может быть другая последовательность аргументов. printf на это не способен
в данном случае конечно format лучше всех, но у него не преимущества предыдущих решений - они работают «из коробки» и не создают дополнительных завязок
>ну зачем ты опять этот ущербный faq тащишь сюда???
Есть чего возразить по поводу поинта по ссылке?
да было б чему там возражать - то лузеры вайнят что кактус горький, ты лучше не ориентируйся на неосиляторов (козлёночком станешь), а читай как делают профессионалы
если ты не осилил ссылки на apachedev вот тебе туториал попроще
после того как осилишь разрешаю посмотреть ссылку на apachedev, которую тебе уже давали
вовсе и не страшный, просто язык сравнительного низкого уровня и программировать на нём - не клопов давить, требует определённой квалификации от программиста, да
это тот же случай когда человек пописал код на Qt и считает что он профессионал в С++, а это далеко не так
предлагаю всем участникам этого срача опознать себя по вот этой табличке программистской некомпетентности. прям как с этого треда рисовали, честное слово