Formatting strings using safe printf-like functions
The printf family of functions is a threat to security. It is a very bad design to allow users to put their own strings as a type and format the specifiers. So what do we do when user-defined format is required? How shall we implement the std::string to_string(const std::string& format_specifier) const; member function of the following class?
class i_hold_some_internals
{
int i;
std::string s;
char c;
// ...
}; Getting ready
Basic knowledge of standard library is more than enough for this recipe.
How to do it...
We wish to allow users to specify their own output format for a string:
- To do that in a safe manner, we need the following header:
#include <boost/format.hpp>
- Now, we add some comments for the user:
// `fmt` parameter may contain the following:
// $1$ for outputting integer 'i'.
// $2$ for outputting string 's'.
// $3$ for outputting character 'c'.
std::string to_string(const std::string&...