## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

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

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required