在c ++中将字符串(包含字符和浮点数)转换为double

时间:2013-11-14 18:20:41

标签: c++ string math

我有一个分数的分配,其中用户将输入作为a / b,发送,但a和b是简单的整数而不是负数或浮点数并且使用if else语句提取它们很容易

但是现在我正在编写一个复数(计算器类型)程序。而我实际上是以+ bi形式的字符串(其中a和b可以是整数或浮点数或两者)。 如果不使用大量的额外线路我会遇到困难。


编辑:我的问题实际上是如何提取'Real&虚构的部分'来自+ bi。

e.g。 输入: 3.45 - 9.87我并获得float Real = 3.45和float Imaginary = 9.87

我正在使用c ++并使用visual studio

1 个答案:

答案 0 :(得分:0)

iostreams库提供了很好的重载运算符,你可以大致读取表达式的组件:

string s = "3.45 - 9.87 i";
istringstream ist( s );
double re, im;
char op, ki;
ist >> re >> op >> im >> ki;
// op == '-'      
// ki == 'i'
complex<double> a( re, op == '-' ? -im : im );

从那里也应该很容易支持更灵活的表达。