我写了以下陈述:
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
?
谢谢
答案 0 :(得分:0)
与CString
不同,std::string
不提供对const char*
的隐式转换(对于good reasons),在这种情况下,更重要的是二进制布局std::string
可能与const char*
不兼容。您应该使用errorReason.c_str()
代替。