为什么调用CString :: Format时std :: string对象无法正确输出

时间:2013-02-05 10:05:11

标签: string-formatting

我写了以下陈述:

   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

谢谢

1 个答案:

答案 0 :(得分:0)

CString不同,std::string不提供对const char*的隐式转换(对于good reasons),在这种情况下,更重要的是二进制布局std::string可能与const char*不兼容。您应该使用errorReason.c_str()代替。