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 ...