A stringstream associates a string object with a stream allowing you to read from the string as if it were a stream (like cin). To use stringstream, we need to include sstream header file. The stringstream class is extremely useful in parsing input.
std::stringstream::str() is the method you are looking for. std::stringstream is a more generic tool. You can use the more specialized class std::ostringstream for this specific job. If you are working with std::wstring type of strings, you must prefer std::wstringstream or std::wostringstream instead.
Very Informally: A string is a collection of characters, a stream is a tool to manipulate moving data around. A string stream is a c++ class that lets you use a string as the source and destination of data for a stream.
How to Perform Extraction or Read Operation in StringStream in C++ Like the insertion, we can also perform extraction on StringStream in C++, like the cin >> operator. We can again do this by using the >> operator or the str() function.
yourStringStream.str()
Use the .str()-method:
Manages the contents of the underlying string object.
1) Returns a copy of the underlying string as if by calling
rdbuf()->str()
.2) Replaces the contents of the underlying string as if by calling
rdbuf()->str(new_str)
...Notes
The copy of the underlying string returned by str is a temporary object that will be destructed at the end of the expression, so directly calling
c_str()
on the result ofstr()
(for example inauto *ptr = out.str().c_str();
) results in a dangling pointer...
std::stringstream::str()
is the method you are looking for.
With std::stringstream
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
is a more generic tool. You can use the more specialized class std::ostringstream
for this specific job.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
If you are working with std::wstring
type of strings, you must prefer std::wstringstream
or std::wostringstream
instead.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
if you want the character type of your string could be run-time selectable, you should also make it a template variable.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
For all the methods above, you must include the following two header files.
#include <string>
#include <sstream>
Note that, the argument NumericValue
in the examples above can also be passed as std::string
or std::wstring
to be used with the std::ostringstream
and std::wostringstream
instances respectively. It is not necessary for the NumericValue
to be a numeric value.
From memory, you call stringstream::str()
to get the std::string
value out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With