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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access