Select Page

How to Convert String to Float/Double in C++

by | C++, Programming, Tips

This tutorial will go through how to convert a String to a float/double and vice versa.


Why Convert Strings to Float/Double?

You have to convert string literals holding numerical values to numbers to perform mathematical operations.

We want to add two numerical strings using the addition operator in the following example.

#include <iostream>
#include<string>

int main() {

    std::string str1 = "5";

    std::string str2 = "10";

    std::string str3 = str1 + str2;

    std::cout << " 5 + 10  = " << str3 << std::endl;

    return 0;

}

We expect 5 + 10 to equal 15, but we will concatenate the strings together:

 5 + 10  = 510

Let’s go through how to convert the two numerical strings to add them together.

Strings in C++

A C++ string variable contains a collection of characters surrounded by double-quotes. There are two types of strings used in C++.

  • C-strings, which are arrays of type char terminated by the null character \0.
  • Strings that are objects of the Standard C++ Library string class.

Convert String to Float in C++

The function stof parses a string, interprets it as a floating-point number and returns it as a value of type float. Let’s look at the example below:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str1 = "5";
    string str2 = "10";

    // convert string to float
    float num1 = stof(str1);
    float num2 = stof(str2);
    sum = num1 + num2
    cout<< "5 + 10  = " << sum << endl;

    return 0;
}

Let’s run the code to see the result:

5 + 10  = 15

Convert String to Double in C++

The function stod parses a string, interprets it as a double and returns it as a value of type double. Let’s look at the example below:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str1 = "5";
    string str2 = "10";

    // convert string to double
    double num1 = stod(str1);
    double num2 = stod(str2);
    double sum = num1 + num2;

    cout<< "5 + 10  = " << sum << endl;

    return 0;
}

Let’s run the code to see the result:

5 + 10  = 15

Convert Char Array to Float in C++

We can use the stof function to convert a numerical char array to a floating-point number. Let’s look at the example below:

#include <iostream>

using namespace std;

int main() {

    char arr1[] = "5";
    char arr2[] = "10";

    float num1 = stof(arr1);
    float num2 = stof(arr2);

    float sum = num1 + num2;

    cout << "5 + 10 = " << sum << endl;
    
    return 0;

}

Let’s run the code to see the result:

5 + 10 = 15

Convert Char Array to Double in C++

We can use the stod function to convert a numerical char array to a double number. Let’s look at the example below:

#include <iostream>

int main() {
    char arr[] = "245.789""";

    float num_double = std::atof(arr);

    std::cout << "num_double = " << num_double << std::endl;

    return 0;
}

Let’s run the code to see the result:

num_double = 245.789

Convert Float to String in C++ Using to_string()

We can use the C++11 to_string() function to convert a floating-point number to a string. Let’s look at the example below:

#include <iostream>
#include <string>

int main() {
    float num_float = 245.789F;

    std::string str1 = std::to_string(num_float);

    std::cout << "Float to String = " << str1 << std::endl;

    return 0;
}

Let’s run the code to see the result:

Float to String = 245.789001

Convert Double to String in C++ Using to_string()

We can use the C++11 to_string() function to convert a double number to a string. Let’s look at the example below:

#include <iostream>
#include <string>

int main() {
    float num_float = 245.789F;

    std::string str1 = std::to_string(num_float);

    std::cout << "Float to String = " << str1 << std::endl;

    return 0;
}

Let’s run the code to see the result:

Double to String = 245.789000

Convert Float to String in C++ Using stringstream

For C++ compilers older than C++ 11, we can the stringstream objects. A stringstream object uses a string buffer to store a sequence of characters. Let’s look at the examples below:

#include <iostream>
#include<string>
#include<sstream> 

int main() {
    float num_float = 245.2743F;


    // stringstream object
    std::stringstream ss;

    // adding char array to buffer
    ss << num_float;

    // empty the buffer into a string
    std::string str = ss.str();

    std::cout << "Float to String = " << str << std::endl;

    return 0;
}
Float to String = 245.274

Convert Double to String in C++ Using stringstream

#include <iostream>
#include<string>
#include<sstream>

int main() {
    double num_double = 245.2743;

    std::stringstream ss;

    ss << num_double;


    std::string str = ss.str();

    std::cout << "Double to String = " << str << std::endl;

    return 0;
}
Double to String = 245.274

Summary

Congratulations on reading to the end of this tutorial. We have gone through how to convert a string to a float or double and vice-versa.

For further reading on string manipulation, go to the articles:

Have fun and happy researching!

Research Scientist at Moogsoft | + posts

Suf is a research scientist at Moogsoft, specializing in Natural Language Processing and Complex Networks. Previously he was a Postdoctoral Research Fellow in Data Science working on adaptations of cutting-edge physics analysis techniques to data-intensive problems in industry. In another life, he was an experimental particle physicist working on the ATLAS Experiment of the Large Hadron Collider. His passion is to share his experience as an academic moving into industry while continuing to pursue research. Find out more about the creator of the Research Scientist Pod here and sign up to the mailing list here!