String to int Conversion Using atoi()
The atoi() function in C++ takes a character array or string literal as an argument and returns its value in an integer. It is defined in the <stdlib.h> header file. This function is inherited by C++ from C language so it only works on C style strings i.e. array of characters.
If you observe atoi() a little closer you will find out that it stands for:
Example:
C++
// C++ program to demonstrate the // functioning of the atoi() function #include <iostream> #include <stdlib.h> using namespace std; int main() { char * str1 = "141" ; char * str2 = "3.14" ; int res1 = atoi (str1); int res2 = atoi (str2); cout << "atoi(" << str1 << ") is " << res1 << "\n" ; cout << "atoi(" << str2 << ") is " << res2 << "\n" ; return 0; } |
atoi(141) is 141 atoi(3.14) is 3
stoi() vs atoi()
stoi() |
atoi() |
---|---|
1. stoi() is added in C++ 11 | 1. atoi() is a legacy C-style function |
2. stoi() works for both C++ strings and C-style strings (character array and string literal) | 2. atoi() works only for C-style strings (character array and string literal) |
3. stoi() can take up to three parameters, the second parameter is for starting index and the third parameter is for the base of the input number. |
3. atoi()takes only one parameter and returns an integer value |
4. Syntax: int stoi (const string& str, size_t* index = 0, int base = 10); |
4. Syntax: int atoi (const char * str); |
Convert String to int in C++
Converting a string to int is one of the most frequently encountered tasks in C++. As both string and int are not in the same object hierarchy, we cannot perform implicit or explicit type casting as we can do in case of double to int or float to int conversion. Conversion is mostly done so that we can convert numbers that are stored as strings.
Example:
str=”191″
num=191
There are 5 significant methods to convert strings to numbers in C++ as follows:
- Using stoi() function
- Using atoi() function
- Using stringstream
- Using sscanf() function
- Using for Loop
- Using strtol() function