如何轻松地将包含两个由逗号分隔的浮点数的字符串转换为复数?
例如:
string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need
是否有比分割字符串更简单/更快的方法,读取这两个值并返回complex<float>
?
答案 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.您可以在字符串周围添加括号,然后该类会为您读取数字。