String conversion in double C ++

3

I would like to convert a string passed to a value of type double .

Example:

string expressao = "1+1";
double x, y;

So, x = expressao[0]; and y = expressao[1];

And the sum of x+y returned 2 in response.

I've read some things about atof , but I could not apply it properly.

Follow the code below:

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

double resultado(string); // prototipo

int main()
{
    string expressao;

    cout << "Exemplo de Expressão:\n\n1+2\n\n";
    cout << "Insira uma expressão:";
    getline(cin, expressao);

    cout << expressao << " = " << resultado(expressao) << endl;
}

double resultado(string valor) {
    double x, y;
/*
    gostaria de recuperar apenas os valores numericos. Por exemplo:
    Se a minha entrada for 1+1
    gostaria repartir a entrada(1+1) em duas partes.
    1. valor[0] para recuperar o valor 1
    2. valor[1] para recuperar o outro valor 1 depois do sinal(+)
    3. em seguida gostaria de converter esses dois char(valor[0] e valor[1]) em valores do tipo double par assim, somá-los e retorná-los.
*/
    return x;
/*
    if (opr[1] == '+') { 
    return x+y;
    } else if (opr[1] == '-') {
        return x-y;
    } else if (opr[1] == '*') {
        return x*y;
    } else if (opr[1] == '/') {
        return x/y;
    } else {
        return 0.0;
    }
*/
}
    
asked by anonymous 01.06.2014 / 00:39

1 answer

2

See if it's something you're looking for.

#include <sstream>
#include <iostream>

double resultado(std::string valor)
{
    std::istringstream iss(valor);
    int X, Y;

    iss >> X >> Y;
    return X + Y;
}

int main()
{
    double z = resultado("1+2");

    std::cout << z << std::endl;
} 

Ideone

    
01.06.2014 / 01:44