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

Bur*_*ard 4 c++ string complex-numbers

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

例如:

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

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

Cub*_*bbi 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";
}
Run Code Online (Sandbox Code Playgroud)

PS.有趣的是每个人的风格略有不同,虽然答案是一样的.如果您已准备好处理异常,也可以使用boost来完成:

    std::complex<float> c = boost::lexical_cast<std::complex<float> >('('+s+')');
Run Code Online (Sandbox Code Playgroud)