Let us consider the below code example. Basically, getMessage1
(internally) creates an std::string
which is meant to be returned and then printed via printf
. How do I convert/cast/manipulate variable myString
so that the output looks like the one from getMessage2
?
I am aware that getMessage3
works, but it requires me to include .c_str()
in every printf
statement (and I'd like to avoid this extra suffix).
#include <string>
const char* getMessage1() {
std::string myString = "SomeOutput";
return myString.c_str();
}
const char* getMessage2() {
return "SomeOutput";
}
std::string getMessage3() {
std::string myString = "SomeOutput";
return myString;
}
int main() {
printf("#1: %s \n", getMessage1()); // prints #1: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠¿ⁿ9"w
printf("#2: %s \n", getMessage2()); // prints #2: SomeOutput
printf("#3: %s \n", getMessage3().c_str()); // prints #3: SomeOutput
return 0;
}