6

カンマで区切られた 2 つの float を含む文字列を複合体に簡単に変換するにはどうすればよいですか?

例えば:

string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need

文字列を分割し、2 つの値を読み取って を返すよりも簡単で高速な方法はありcomplex<float>ますか?

4

2 に答える 2

10

かっこを追加するだけで、デフォルト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。答えは同じですが、みんなのスタイルが少し違うのはおかしいです。例外を処理する準備ができている場合は、これもブーストで実行できます。

    std::complex<float> c = boost::lexical_cast<std::complex<float> >('('+s+')');
于 2010-08-05T11:02:31.083 に答える
1

複合クラスには抽出演算子があります。 文字列を括弧で囲むと、クラスが数値を読み取ります。

于 2010-08-05T11:03:38.670 に答える