2

sscanfを使用して、ブースト日を持つ文字列を分離しようとしています。コードは次のとおりです。

 std::sscanf(ss.c_str(),"%ls\t%lf\t%lf",&date1_,&num1_,&num2_);

次のエラーが発生します。

 warning: format ‘%ls’ expects type ‘wchar_t*’, but argument 3 has type ‘boost::gregorian::date*’

誰かが私にこれの修正を提案できますか?どうも!

4

1 に答える 1

3

この方法では実行できません。sscanfはC関数であり、プリミティブ型のみを読み取ることができ、クラス型は読み取ることができません。

C ++では、クラスタイプの読み取り/書き込みの銃は「ストリーム」で<iostream>あり、<sstream>ヘッダーになります。使用しているBoostライブラリの作成者が、このクラスに対して過負荷operator<<をかけるのに十分親切であった場合、これらは機能します。operator>>

boost::gregorian::dateそうでない場合は、日付フィールドを(基本タイプとして)1つずつ読み取り、コンストラクターを使用してオブジェクトを作成するのが最善の方法です。

于 2011-09-03T16:43:31.947 に答える