In this article, we will discuss how to concatenate a string and an int in C++.
Table Of Contents
Introduction
We have given a string & an int, and we have to concatenate/merge them into a single string. For example, we have a string strValue
, and an int num
, like this,
string strValue = "FIFA - "; int num = 2022;
After concatenating this string strValue with int variable num, the final string should be like,
"FIFA - 2022"
In order to concatenate a std::string and int, we have to convert the given integer to a string first, because C++ did not support the concatenation of variables of different data types. There are different ways to do this. Let’s discuss them one by one.
Method 1: Using std::stringstream() function
In this approach, we will use the operator<< of std::stringstream. It will be used to convert the given integer variable to string. Once the integer is converted into a string, we will concatenate the two strings with the concatenation operator (+) and get the new merged string. The time complexity in this approach is in the order of O(1), while the space complexity of the algorithm in this approach is O(n), where n is the length of output string.
The std::stringstream Class in C++ can be used to treat string objects as a stream of characters, thus the operations insertion and extraction can be applied to/from the string just as similar to cin and cout. One can use these operations mostly to convert the given numerical data to string or vice versa. In our case we will use the insertions operator (<<) to insert the integer data to stream buffer, and then will use the str() method of std::stringstream as the extraction operator to get the stream in the form of string.
Frequently Asked:
Let’s see an example,
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string strValue = "FIFA - "; int num = 2022; // Create a string stream std::stringstream streamObj; // Insert integer to the string stream streamObj << num; // Merge string "strValue" with the string from stringstream string mergedStr = strValue + streamObj.str(); cout << "Concatenated String : " << mergedStr << endl; return 0; }
Output:
Concatenated String : FIFA - 2022
Method 2: Use std::to_string() function
In this approach, we will use the std::to_string() function, which accepts an integer value, and returns it as a string. After converting int value to string, we wil concatnate the two strings with the concatenation operator (+) and return the output. The time complexity in this case is of the order O(1), while the space complexity is equal to the legth of output string.
Let’s see an example,
#include <iostream> #include <string> using namespace std; int main() { string strValue = "FIFA - "; int num = 2022; // convert int to string, and add it to the string variable "strValue" string mergedStr = strValue + to_string(num); cout << "Concatenated String : " << mergedStr << endl; return 0; }
Output
Concatenated String : FIFA - 2022
It concatenated a string with an int.
Method 3: Using boost::lexial_cast<> from the Boost Library
In this approach we will use boost::lexial_cast() function, which is defined in the Boost Library. This function will take the integer value as input, and returns that as a string. After which, we can concatenate the given string to this output string and print the resultant string. The time complexity in this approach is of the order O(1), while the space compexity is linear.
The boost::lexial_cast<> function can be accessed from Boost.Lexial_cast
which is defined in "boost/lexial_cast.hpp"
file. It is a cast operator which can convert the numeric value to string, representing that value or vice versa. In case, the conversion fails , it throws an exception of type bad_lexial_cast
, which is usually derived from bad_cast
. It accepts the int
value as argument and returns the required string
.
Let’s see an example,
#include <iostream> #include <string> #include <boost/lexical_cast.hpp> using namespace std; int main() { string strValue = "FIFA - "; int num = 2022; // convert int to string, and add it to the string variable "strValue" string mergedStr = strValue + boost::lexical_cast<std::string>(num); cout << "Concatenated String : " << mergedStr << endl; return 0; }
Output
Pointers in C/C++ [Full Course]
Concatenated String : FIFA - 2022
It concatenated a string with an int.
Summary
Today, we came accross various methods to concatenate a given integer with a string value. In all the approaches, we have first converted the numeric value of integer data type into a string, and then concatenated it to the original string value. Thanks.