Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you append an int to a string in C++? [duplicate]

Tags:

c++

int

stdstring

People also ask

Can you concatenate an int to a string in C?

Use asprintf , strcat and strcpy Functions to Concatenate String and Int in C. The first step to concatenating int variable and the character string is to convert an integer to string. We utilize asprintf function to store the passed integer as a character string.


With C++11, you can write:

#include <string>     // to use std::string, std::to_string() and "+" operator acting on strings 

int i = 4;
std::string text = "Player ";
text += std::to_string(i);

Well, if you use cout you can just write the integer directly to it, as in

std::cout << text << i;

The C++ way of converting all kinds of objects to strings is through string streams. If you don't have one handy, just create one.

#include <sstream>

std::ostringstream oss;
oss << text << i;
std::cout << oss.str();

Alternatively, you can just convert the integer and append it to the string.

oss << i;
text += oss.str();

Finally, the Boost libraries provide boost::lexical_cast, which wraps around the stringstream conversion with a syntax like the built-in type casts.

#include <boost/lexical_cast.hpp>

text += boost::lexical_cast<std::string>(i);

This also works the other way around, i.e. to parse strings.


printf("Player %d", i);

(Downvote my answer all you like; I still hate the C++ I/O operators.)

:-P


These work for general strings (in case you do not want to output to file/console, but store for later use or something).

boost.lexical_cast

MyStr += boost::lexical_cast<std::string>(MyInt);

String streams

//sstream.h
std::stringstream Stream;
Stream.str(MyStr);
Stream << MyInt;
MyStr = Stream.str();

// If you're using a stream (for example, cout), rather than std::string
someStream << MyInt;

For the record, you can also use a std::stringstream if you want to create the string before it's actually output.


cout << text << " " << i << endl;