I am programming in C++.
As basic as this question is I cannot seem to find an answer for it anywhere. So here is the problem:
I want to create a C-style string however I want to put an integer variable i into the string. So naturally, I used a stream:
stringstream foo;
foo
<< "blah blah blah blah... i = "
<< i
<< " blah blah... ";
However, I need to somehow get a C-style string to pass to a function (turns out foo.str() returns an std::string). So this is technically a three part question —
1) How do I convert std::string to a C-style string?
2) Is there a way to get a C-style string from a stringstream?
3) Is there a way to use a C-style string directly (without using stringstreams) to construct a string with an integer variable in it?
Simply call
string.c_str()to get achar const*. If you need a mutable _C-style_ string then make a copy. The returned C string will be valid as long as you don’t call any non-const function ofstring.There is, simply
strstream.str().c_str(). The returned C string will be valid only until the end of the expression that contains it, that means that is valid to use it as a function argument but not to be stored in a variable for later access.There is the C way, using
sprintfand the like.