カンマで区切られた 2 つの float を含む文字列を複合体に簡単に変換するにはどうすればよいですか?
例えば:
string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need
文字列を分割し、2 つの値を読み取って を返すよりも簡単で高速な方法はありcomplex<float>
ますか?
カンマで区切られた 2 つの float を含む文字列を複合体に簡単に変換するにはどうすればよいですか?
例えば:
string s = "123,5.3";//input
complex<float> c(123,5.3);//output/what I need
文字列を分割し、2 つの値を読み取って を返すよりも簡単で高速な方法はあり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。答えは同じですが、みんなのスタイルが少し違うのはおかしいです。例外を処理する準備ができている場合は、これもブーストで実行できます。
std::complex<float> c = boost::lexical_cast<std::complex<float> >('('+s+')');
複合クラスには抽出演算子があります。 文字列を括弧で囲むと、クラスが数値を読み取ります。