将CString转换为std :: string而不使用' GetString()'

时间:2014-09-25 15:58:24

标签: c++ type-conversion cstring stdstring

如果m_attr.GetValue()返回一个CString,那么:

为什么以下代码无错误消息...只有警告消息' C4927'?

std::string sigCncDialog::GetSignalAttributeValue()
{return m_attr.GetValue();}

正确的当然是:

std::string sigCncDialog::GetSignalAttributeValue()
{return m_attr.GetValue().GetString();}

1 个答案:

答案 0 :(得分:1)

因为两个罪恶:

  • CStringconversion operator允许隐式转换为C风格的字符指针
  • 编译器显然允许隐式转换序列包含两个用户定义的转换CString -> const char* -> std::string,只包含您提到的warning,即使标准C ++禁止这样的转换