It's easy. Just add the library to your include path, and include <pprintpp.hpp>
.
pprintpp.hpp
defined the macro pprintf
, which just depends on the original printf
.
#include <cstdio>
#include <pprintpp.hpp>
int main()
{
pprintf("Hello {s}!, {} {} {}\n", "world", 123, 123ull, 1.23);
}
pprintpp
tries to be as printf
compatible as possible, but there are some pecularities:
printf
historically supports indendation, hex printing of unsigneds, etc. via additional
optional format specifiers between %
and the actual type format character.
pprintpp
accepts these between the {}
brackets. Examples:
pprintf("Int with 10 characters indentation: {10}\n", 123);
pprintf("Unsigned long long or whatever in hex notation: {#8x}\n", static_cast<unsigned long long>(0x123));
It would easily be possible, to transform pprintf("{}", "some string");
to printf("%s", "some string");
.
For safety reasons, i decided to not automatically print everything as a string, which looks like a character array.
In order to print such a string, please put an "s" between the braces: {s}
: pprintf("{s}", "some string");
.
Braces can be normally printed as before pprintpp
, but the opening ones have to be masked in order to
tell pprintpp
to not interprete these as place holders:
pprintf("These are braces: \\{}.\n");
pprintf("JSON document: \\{ "foo" : "bar", "value" : {} }\n", 123);