Printf, по нему в мане все хорошо расписано. А как форматировать вывод иострима я так и не понял. Да и для файловых операций предпочитаю fopen-ы.
А еще где-то видел сравнение, что на форматирование даже сложного printf-а тратится меньше ресурсов нежели на вызовы cout-ов. Это не аргумент в пользу первого, просто вспомнилось в тему.
ога, printf очень хорошо расписано. И интернет завален вопросами «как напечатать int64_t???» (как бы сам такой). А с cout никаких проблем, само печатается и без ошибок.
Что-то мне подсказывает, что %ll. Еще что-то мне подсказывает, что я без проблем найду это в мане. А вот вывести cout-ом дабл с нужной точностью и в нужном виде - начинается жоповорот, в мане не описанный, и как пить дать интернеты заваленны подобными вопросами.
А вот вывести cout-ом дабл с нужной точностью и в нужном виде - начинается жоповорот, в мане не описанный, и как пить дать интернеты заваленны подобными вопросами.
std::setw, std::setfill, std::траяляля уже отменили? Все-таки не стоит попадаться на провокации отдельно взятых недальновидных товарищей и взять таки да и почитать ну хотя бы Страуструпа. Там все есть.
>std::setw, std::setfill, std::траяляля уже отменили?
В курсе, что сущесвует эта хрень, но она очень громоздкая. Именно это основная причина моей не любви к ней. Но сейчас хороший анонимус показал пример херости и принтф-а, да.
В итоге получается такое награмождение, в оличие от: %lf %i %s и т.д.
Вчера у нас было:
struct A {
int var;
};
A a;
printf("var=%d", a.var);
А завтра мы сделали:
struct A {
long var;
};
Вывод с жестко заданным форматом осуществляется в мильене мест в проекте. Вопрос: что делать бум? Бежать в хозмаг за мылом и веревкой? Возможно. Но те немногие, кто умудрится пережить этот позор, завтра будут писать нечто навроде:
typedef int var_t;
#define VART_FTM "%d"
struct A {
var_t var;
};
A a;
printf("var=" VART_FMT, a.var);
...и получат чудную портянку из массы внешних пар тип-макрос. Ибо переносимость или хотя бы способность к быстрой адаптации стоит жертв. Про предопределенные типы фиксированного размера или всеми любимые size_t/ssize_t уже говорили выше.