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可以支持CStirng,而不是std::string

谢谢

4

1 回答 1

0

CString,std::string不提供隐式转换const char*(出于充分的理由),而且在这种情况下更重要的是, 的二进制布局std::string可能与const char*. 你应该errorReason.c_str()改用。

于 2013-02-05T17:19:30.383 回答