如何在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 ...
如何解决这个问题?
答案 0 :(得分:1)
为什么m_strFolderType
是一个字符串?它似乎应该是eFolderType
。
没有自动方式将CString
转换为enum
(实际上是一个整数)。值eFTP
,eCIFS
和eBOTH
不是字符串,编译器不会将它们视为字符串。
将整数作为字符串传递是很难看的。您应该传递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.
}