C++

How to convert a string into an int in C++

The data type declaration of the variable is mandatory in C++ because it is a strongly typed language. Sometimes it is required to change the datatype of a variable from one type to another type for the programming purpose, such as string to int or int to string. This type of conversion can be done in C++ by using different types of built-in functions. The various ways to convert a string into an int in C++ have been shown in this tutorial.

Pre-requisite:

Before checking the examples of this tutorial, you have to check the g++ compiler is installed or not in the system. If you are using Visual Studio Code, then install the necessary extensions to compile the C++ source code to create the executable code. Here, the Visual Studio Code application has been used to compile and execute the C++ code.

Using atoi() function:

The atoi() function is used to return a number by converting a string created by a char array to an integer. The cstdlib header file is required to include to use this function.

Syntax:

int atoi(const char *str)

Create a C++ file with the following code to convert a string of numbers into an integer using the atoi() function. Here, the strcpy() function has been used to convert the string into a char array. The input string value has converted into a char array, and the converted value has been used in the atoi() function to get the integer value of the string. Next, the converted integer will be printed if the conversion is done properly.

//Include for printing the output
#include <iostream>
//Include for using the atoi() function
#include <cstdlib>
//Include for using the strcpy function
#include <cstring>

int main() {

  //Declare a string variable
  std::string strData;
   
  //Declare a chracter array variable
  char strarr[50];

  //Take a number from the user
  std::cout<<strData;

  //Convert the string into a charcater array
  strcpy(strarr, strData.c_str());
   
  //Convert the character array into a integer
  int number = std::atoi(strarr);
   
  //Print the number
  std::cout<<"The converted number is = "<<
    number <<'\n';

  return 0;
}

Output:

The following output will appear if 6090 is taken as input after executing the code.

Using stoi() function:

The atoi() function is used to return a number by converting a string value into an integer. The first argument of this function is mandatory, and the others arguments are optional. The syntax of this function is given below.

Syntax:

int stoi (const string& str, size_t* idx = 0, int base = 10)

Create a C++ file with the following code to convert the string into an integer using the stoi() function. After executing the code, the input value taken from the user will be converted into a number and printed if the input value is a valid number. If the input value contains any alphabet or non-numeric character, then the invalid_argument exception will be generated, and an error message will be printed.

//Include for printing the output
#include <iostream>

int main()
{
  //Declare a string variable
  std::string strData;

  //Take a number from the user
  std::cout<<strData;

  //Convert the string into number with error handling
  try {
        //Convert the string into integer
        int number = std::stoi(strData);
   
        //Print the converted number
        std::cout<<
                  "The converted number is = "<<
                  number <<'\n';
    }
   
        //Handle error if invalid number is given
        catch (std::invalid_argument const &e) {
           std::cout<<"Input value is not a number.\n";
        }
        return 0;
}

Output:

The following output will appear if 4577 is taken as input after executing the code.

The following output will appear if hello is taken as input after executing the code.

Using string streams:

Using the istringstream() function is another way to convert the string into an integer by using the’>>’ operator. Create a C++ file with the following code to convert string data into an integer by using the istringstream() function. A string value of numbers has been assigned into a string variable in the code that has been used as the argument value of the istringstream() function. Next, the converted integer value has been printed.

//Include for printing the output
#include <iostream>

//Include for using the istringstream() function
#include <sstream>

int main()
{
   //Declare a string variable
   std::string strData = "12345";
   
   //Declare an integer variable
   int number;
   
   //Convert the string into the integer
   std::istringstream(strData) >> number;
   
   //Print the converted number
   std::cout<<"The converted number is = "<<
      number <<'\n';

   return 0;
}

Output:

The following output will appear after executing the code.

Using sscanf() function:

Using the sscanf() function is another way to convert the string into an integer. The cstdio header file is required to include for using this function. Create a C++ file with the following code to convert a string value into the integer using the sscanf() function. After executing the script, a string value will be taken from the user. If the input value is a valid number value, then the input value will be converted into the integer and printed; otherwise, an error message will be printed.

//Include for printing the output
#include <iostream>
//Include for using the sscanf() function
#include <cstdio>

int main() {

  //Declare a string variable
  std::string strData;

  //Declare an integer variable
  int number;

  //Take a number from the user
  std::cout<<strData;

  if (sscanf(strData.c_str(), "%d", &number) == 1) {
    //Print the converted number
    std::cout<<"The converted number is = "<< number <<'\n';
  }
  else {
    //Print the error message
    std::cout<<"Input value is not a number.\n";
  }
  return 0;
}

Output:

The following output will appear if 78325 is taken as input after executing the code.

Using for loop:

The following example shows how to convert a string value into an integer value without using any built-in function. Create a C++ file with the following code to convert a string value into an integer number using the ‘for‘ loop. A string value of the number has been assigned into a variable that has been used in the ‘for‘ loop to convert the string into an integer.

#include <iostream>
#include <string>

int main()
{
  //Declare a string variable
  std::string strData = "6000";

  //Declare an integer variable
  int number;

  //Convert the string into integer
  for (char chr: strData)
    if (chr>= '0'&&chr<= '9') {
      number = number * 10 + (chr - '0');
    }

  //Print the converted number
  std::cout<<"The converted number is = "<<
  number <<'\n';

  return 0;
}

Output:

The following output will appear if 6000 is taken as input after executing the code.

Conclusion:

Five different ways to convert a string into a number have been described in this tutorial by using simple examples for helping the readers to know the way to convert any string to an integer in C++ programming.

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.