Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ Converting a String to Double

I've been trying to find the solution for this all day! You might label this as re-post but what I'm really looking for is a solution without using boost lexical cast. A traditional C++ way of doing it would be great. I tried this code but it returns a set of gibberish numbers and letters.

string line; 
double lineconverted;

istringstream buffer(line);
lineconverted;
buffer >> lineconverted;

And I alse tried this, but it ALWAYS returns 0.

stringstream convert(line);
if ( !(convert >> lineconverted) ) {
    lineconverted  = 0;
}

Thanks in advance :)

EDIT: For the first solution I used (gibberish).. Here's a snapshot enter image description here

like image 523
PewK Avatar asked May 25 '13 08:05

PewK


1 Answers

#include <sstream>

int main(int argc, char *argv[])
{
    double f = 0.0;

    std::stringstream ss;
    std::string s = "3.1415";

    ss << s;
    ss >> f;

    cout << f;
}

The good thing is, that this solution works for others also, like ints, etc.

If you want to repeatedly use the same buffer, you must do ss.clear in between.

There is also a shorter solution available where you can initialize the value to a stringstream and flush it to a double at the same time:

#include <sstream>
int main(int argc, char *argv[]){
   stringstream("3.1415")>>f ;
}
like image 124
Devolus Avatar answered Sep 26 '22 13:09

Devolus