将std :: string转换为复杂的<double>以获得各种格式</double>

时间:2014-03-20 19:26:45

标签: c++ string complex-numbers

编写将std::complex<double> str2complex(std::string str);包含各种格式的std::string转换为std::complex<double>的函数1.0的最佳方法是什么?

我假设给这个函数的字符串只包含一个复数,但是能够做一些错误检查也很好。

我希望它的格式是:

对于数字real = 0.0,imag = (1.0)

1.0

对于数字real = 2.0,imag = (1.0,2.0) 1.0+2.0i 1.0 + 2.0i 1.0+2.0*i 1.0 + 2.0*i +1.0+2.0i +1.0+2.0*i +2.0*i+1.0 2.0*i+1.0 2.0i+1.0

operator>>

对于前两个,标准{{1}}应该有效,但对于其他人,我不确定采取什么方法。

1 个答案:

答案 0 :(得分:0)

看起来你需要一个解析器。对于所有重要的事情,您只需检测&#39; +&#39;和&#39;我&#39;在第一个以外的情况下。

我的想法如下:

  1. 如果&#39; +&#39;是第一个符号,从第二个字符开始
  2. 仔细阅读下一个&#39; +&#39;的字符串。无论什么阅读将被视为一个单位
  3. 如果有&#39; i&#39;在字符串中,这就是imag,将值解析为double imag。否则,解析为双倍真实。是&#39; *&#39;。
  4. 重复2-> 3。