Как преобразовать строку в сложный <float>в C ++? - PullRequest
4 голосов
/ 05 августа 2010

Как мне легко преобразовать строку, содержащую два числа с плавающей точкой, разделенных запятой, в комплекс?

Например:

string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need

Есть ли более простой / быстрый способ, чем разделитьстрока, прочитайте два значения и верните complex<float>?

Ответы [ 2 ]

9 голосов
/ 05 августа 2010

Просто добавьте скобки и по умолчанию operator>> сделает это за вас:

#include <iostream>
#include <string>
#include <complex>
#include <sstream>
int main()
{
        std::string s = "123,5.3";//input

        std::istringstream is('(' + s + ')');
        std::complex<float> c;
        is >> c;

        std::cout << "the number is " << c << "\n";
}

PS. Забавно, что стиль у всех немного отличается, хотя ответы одинаковы. Если вы готовы обрабатывать исключения, это также можно сделать с помощью boost:

    std::complex<float> c = boost::lexical_cast<std::complex<float> >('('+s+')');
1 голос
/ 05 августа 2010

В сложном классе есть оператор извлечения. Вы можете добавить круглые скобки вокруг строки, и тогда класс будет читать число для вас.

...