Best way to format string in C++

Viewed 23646

In javascript I can format a string using template string

const cnt = 12;
console.log(`Total count: ${cnt}`);

if I work with python I can use the f-string:

age = 4 * 10
f'My age is {age}'

But, if I working with C++(17) what is the best solution to do this (if it is possible)?

3 Answers

I think the simpler way is std::to_string:

std::string str = "My age is ";
str += std::to_string(age);

std::ostringstream also works nicely and can be useful as well:

With this at the top of your source file

#include <sstream>

Then in code, you can do this:

std::ostringstream ss;
ss << "My age is " << age;
std::string str = ss.str();

you can use sprintf

sprintf(dest_string, "My age is %d", age).

but using sprintf will rase an error, so best use snprintf:

snprintf(dest_string, size , "My age is %d", age);

where size is the is the maximum number of bytes.

If you want to write to stdout:

const int cnt = 12;
std::cout << "Total count: " << cnt << "\n";

Writing to any other stream works similar. For example replace std::cout by a std::ofstream to write to a file. If you need the formatted string:

std::ostringstream oss;
oss << "Total count: " << cnt << "\n";
std::string s = oss.str();
std::cout << s;
Related