printf is superior and more concise, and snprintf is practically the only C string manipulation function that is not painful to use.
Try to print a 32-bit unsigned int as hexadecimal number of exactly 8 digits, using cout. You can do std::hex and std::setw(8) and std::setfill('0') and don’t forget to use std::dec afterwards, or you can just, you know, printf("%08x") like a sane person.
Just don’t forget to use -Werror=format but that is the default option on many compilers today.
C++23 now includes std::print which is exactly like printf but better, so the whole argument is over.
printf
is superior and more concise, andsnprintf
is practically the only C string manipulation function that is not painful to use.Try to print a 32-bit unsigned int as hexadecimal number of exactly 8 digits, using
cout
. You can dostd::hex
andstd::setw(8)
andstd::setfill('0')
and don’t forget to usestd::dec
afterwards, or you can just, you know,printf("%08x")
like a sane person.Just don’t forget to use
-Werror=format
but that is the default option on many compilers today.C++23 now includes
std::print
which is exactly likeprintf
but better, so the whole argument is over.I went digging in cppref at the format library bc I thought c++20 or c++23 added something cool.
Found
std::print
and was about to reply to this comment to share it bc I thought it was interesting. Then I read the last sentence.Darn you and your predicting my every move /j