0% found this document useful (0 votes)
71 views

Converting Strings To Numbers in C - C++

There are two common methods to convert strings to numbers in C/C++: 1. Using stringstream class or sscanf() which allows extracting numeric values from strings into variables of the appropriate type. 2. Using stoi() or atoi() functions which take a string and return its numeric equivalent as an integer value. stoi() is a C++ function while atoi() works for C-style strings.

Uploaded by

Krishanu Modak
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

Converting Strings To Numbers in C - C++

There are two common methods to convert strings to numbers in C/C++: 1. Using stringstream class or sscanf() which allows extracting numeric values from strings into variables of the appropriate type. 2. Using stoi() or atoi() functions which take a string and return its numeric equivalent as an integer value. stoi() is a C++ function while atoi() works for C-style strings.

Uploaded by

Krishanu Modak
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Converting Strings to Numbers in C/C++


There are two common methods to convert strings to numbers:

1. Using stringstream class or sscanf()


stringstream() : This is an easy way to convert strings of digits into ints, oats or doubles. Following is a sample program using a
stringstream to convert string to int.

// A program to demonstrate the use of stringstream


#include <iostream>
#include <sstream>
using namespace std;
  
int main()
{
    string s = "12345";
  
    // object from the class stringstream
    stringstream geek(s);
  
    // The object has the value 12345 and stream
    // it to the integer x
    int x = 0;
    geek >> x;
  
    // Now the variable x holds the value 12345
    cout << "Value of x : " << x;
  
    return 0;
}

Output:

Value of x : 12345

// A stringstream is similar to input/output


// file stream. We need to declare a stringstream
// just like an fstream, for example:
stringstream ss;

// and, like an fstream or cout,


// we can write to it:
ss << myString; or
ss << myCstring; or
ss << myInt;, or float, or double, etc.

// and we can read from it:


ss >> myChar; or
ss >> myCstring; or
ss >> myInt;

To summarize, stringstream is a convenient way to manipulate strings.

sscanf() is a C style function similar to scanf(). It reads input from a string rather that standard input.

#include<stdio.h>
int main()
{
    const char *str = "12345";
    int x;
    sscanf(str, "%d", &x);
    printf("\nThe value of x : %d", x);
    return 0;
}

Output:

Value of x : 12345

Similarly we can read oat and double using %f and %lf respectively.
2. String conversion using stoi() or atoi()
stoi() : The stoi() function takes a string as an argument and returns its value. Following is a simple implementation:

// C++ program to demonstrate working of stoi()


// Work only if compiler supports C++11 or above.
#include <iostream>
#include <string>
using namespace std;
  
int main()
{
    string str1 = "45";
    string str2 = "3.14159";
    string str3 = "31337 geek";
  
    int myint1 = stoi(str1);
    int myint2 = stoi(str2);
    int myint3 = stoi(str3);
  
    cout << "stoi(\"" << str1 << "\") is "
         << myint1 << '\n';
    cout << "stoi(\"" << str2 << "\") is "
         << myint2 << '\n';
    cout << "stoi(\"" << str3 << "\") is "
         << myint3 << '\n';
  
    return 0;
}

Output:

stoi("45") is 45
stoi("3.14159") is 3
stoi("31337 geek") is 31337

atoi() : The atoi() function takes a character array or string literal as an argument and returns its value. Following is a simple
implementation:

// For C++11 above


#include <iostream>
#include <cstdlib>
using namespace std;
   
int main()
{
    const char *str1 = "42";
    const char *str2 = "3.14159";
    const char *str3 = "31337 geek";
     
    int num1 = atoi(str1);
    int num2 = atoi(str2);
    int num3 = atoi(str3);
    
    cout << "atoi(\"" << str1 
              << "\") is " << num1 << '\n';
    cout << "atoi(\"" << str2 
              << "\") is " << num2 << '\n';
    cout << "atoi(\"" << str3 
              << "\") is " << num3 << '\n';
     
   return 0;
}

Output:

atoi("42") is 42
atoi("3.14159") is 3
atoi("31337 geek") is 31337

stoi() vs atoi()

atoi() is a legacy C-style function. stoi() is added in C++ 11.


atoi() works only for C-style strings (character array and string literal), stoi() works for both C++ strings and C style strings
atoi() takes only one parameter and returns integer value.

int atoi (const char * str);


stoi() can take upto three parameters, the second parameter is for starting index and third parameter is for base of input number.

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

Similarly, for converting String to Double, atof() can be used. The above function returns the converted integral number as an int value. If
no valid conversion could be performed, it returns zero.

Exercise
Write your won atof() that takes a string (which represents an oating point value) as an argument and returns its value as double.

Reference:
http://www.cplusplus.com/reference/string/stoi/
http://www.cplusplus.com/reference/sstream/stringstream/
http://www.cplusplus.com/reference/cstdlib/atoi/

You might also like