如何轻松地将包含以逗号分隔的两个浮点数的字符串转换为复数?
例如:
string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need
有没有比拆分字符串、读取两个值并返回更简单/更快的方法complex<float>
?
如何轻松地将包含以逗号分隔的两个浮点数的字符串转换为复数?
例如:
string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need
有没有比拆分字符串、读取两个值并返回更简单/更快的方法complex<float>
?
只需添加括号,默认即可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+')');
复杂类有一个提取运算符。 您可以在字符串周围添加括号,然后该类将为您读取数字。