在MFC(VC ++)中将CString转换为枚举类型?

时间:2010-11-29 08:48:19

标签: visual-c++ mfc

如何在MFC(VC ++)中将CString转换为枚举类型?

我有一个方法将输入参数作为Enum但我将Cstring值传递给它如何将其转换为枚举。

CString strFolderType = strFolderType.Right(strFolderType.GetLength()-(fPos+1));
m_strFolderType = strFolderType ;

我有一个方法

ProtocolIdentifier(eFolderType iFolderType)

where enum eFolderType
{
    eFTP = 1,
    eCIFS,
    eBOTH
};

现在,当我这样打电话时:

ProtocolIdentifier(m_strFolderType);   

它表示无法将CString转换为eFolderType ...

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

为什么m_strFolderType是一个字符串?它似乎应该是eFolderType

没有自动方式将CString转换为enum(实际上是一个整数)。值eFTPeCIFSeBOTH不是字符串,编译器不会将它们视为字符串。

将整数作为字符串传递是很难看的。您应该传递eFolderType作为参数。如果你必须传递一个字符串(也许它来自一些返回字符串的序列化),你将不得不做这样的事情:

eFolderType result = /* whichever should be the default*/ ;
if (m_strFolderType == _T("eFTP")) {
    result = eFTP;
} else if (m_strFolderType == _T("eCIFS")) {
    result = eCIFS;
} else if (m_strFolderType == _T("eBOTH")) {
    result = eBOTH;
} else {
    // Invalid value was passed: either use the default value or
    // treat this as an error, depending on your requirements.
}