6

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

例如:

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

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

4

2 回答 2

10

只需添加括号,默认即可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+')');
于 2010-08-05T11:02:31.083 回答
1

复杂类有一个提取运算符。 您可以在字符串周围添加括号,然后该类将为您读取数字。

于 2010-08-05T11:03:38.670 回答