C++里如何用switch来对字符串进行选择判断
文章目录
在C++里,用switch只能用来判断整数或是字符,如果我需要对字符串进行switch选择操作呢?CodeGuru上的Switch on Strings in C++文章有举例一种用法,源代码如下:
#include
using namespace std;
// Value-Defintions of the different String values
static enum StringValue { evNotDefined,
evStringValue1,
evStringValue2,
evStringValue3,
evEnd };// Map to associate the strings with the enum values
static std::map<std::string, StringValue> s_mapStringValues;// User input
static char szInput[_MAX_PATH];// Intialization
static void Initialize();int main(int argc, char* argv[])
{
// Init the string map
Initialize();// Loop until the user stops the program
while(1)
{
// Get the user’s input
cout « “Please enter a string (end to terminate): “;
cout.flush();
cin.getline(szInput, _MAX_PATH);
// Switch on the value
switch(s_mapStringValues[szInput])
{
case evStringValue1:
cout « “Detected the first valid string.” « endl;
break;
case evStringValue2:
cout « “Detected the second valid string.” « endl;
break;
case evStringValue3:
cout « “Detected the third valid string.” « endl;
break;
case evEnd:
cout « “Detected program end command. ”
« “Programm will be stopped.” « endl;
return(0);
default:
cout « “‘” « szInput
« “‘ is an invalid string. s_mapStringValues now contains ”
« s_mapStringValues.size()
« ” entries.” « endl;
break;
}
}return 0;
}void Initialize()
{
s_mapStringValues[“First Value”] = evStringValue1;
s_mapStringValues[“Second Value”] = evStringValue2;
s_mapStringValues[“Third Value”] = evStringValue3;
s_mapStringValues[“end”] = evEnd;cout « “s_mapStringValues contains ”
« s_mapStringValues.size()
« ” entries.” « endl;
}
文章作者 cookwhy
上次更新 2009-06-19