如何在C ++中将字符串转换为复杂的<float>?</float>

时间:2010-08-05 10:56:40

标签: c++ string complex-numbers

如何轻松地将包含两个由逗号分隔的浮点数的字符串转换为复数?

例如:

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

是否有比分割字符串更简单/更快的方法,读取这两个值并返回complex<float>

2 个答案:

答案 0 :(得分:9)

只需添加括号,默认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 :(得分:1)

The complex class has an extraction operator.您可以在字符串周围添加括号,然后该类会为您读取数字。