3.2. Converting Numbers to Strings
Problem
You have numeric types (int
, float
) and
you need to put the results in a string
,
perhaps formatted a certain way.
Solution
There are a number of different ways to do this, all with benefits and drawbacks. The
first technique I will present uses a stringstream
class to store the string data, because it is part of the standard library and easy to
use. This approach is presented in Example
3-3. See the discussion for alternative techniques.
Example 3-3. Formatting a number as a string
#include <iostream> #include <iomanip> #include <string> #include <sstream> using namespace std; int main() { stringstream ss; ss << "There are " << 9 << " apples in my cart."; cout << ss.str() << endl; // stringstream::str() returns a string // with the contents ss.str(""); // Empty the string ss << showbase << hex << 16; // Show the base in hexadecimal cout << "ss = " << ss.str() << endl; ss.str(""); ss << 3.14; cout << "ss = " << ss.str() << endl; }
The output of Example 3-3 looks like this:
There are 9 apples in my cart. ss = 0x10 ss = 3.14
Discussion
A stringstream
is a convenient way to put data into
a string
because it lets you use all of the formatting
facilities provided by the standard input and output stream classes. In the simplest case
in Example 3-3, I just use the left-shift
operator (<<
) to write a combination of text and
numeric data to my string stream:
ss << "There are " << 9 << " apples in my cart.";
The <<
operator is overloaded for built-in types ...
Get C++ Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.