0

私は次の声明を書きました:

   CString strResult;
   std::string errorReason("no this item");
   strResult.Format("the error reason is: %s", errorReason);

std::string オブジェクトを正しくフォーマットできなかったようです。ただし、std::string を CStirng に置き換えるだけで、strResult を正しくフォーマットできます。

ではなく をva_argサポートできるのはなぜですか?CStirngstd::string

ありがとう

4

1 に答える 1

0

とは異なりCString、は(正当な理由によりstd::string)への暗黙的な変換を提供しません。また、この場合さらに重要なのは、 のバイナリ レイアウトがと互換性がない可能性があることです。代わりに使用する必要があります。const char*std::stringconst char*errorReason.c_str()

于 2013-02-05T17:19:30.383 に答える