我有一个分数的分配,其中用户将输入作为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
答案 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 );
从那里也应该很容易支持更灵活的表达。