1 c
很抱歉甚至不知道该怎么称呼它,但是这里有.
假设我有:
char Fred[] = "1234 Evergreen Terrace";
char Pete[] = "4567 State Street";
char Mark[] = "123 North Street";
char Name[32];
gets(Name);
Run Code Online (Sandbox Code Playgroud)
而不是写:
if(strcmp(name,"Fred")==0);
printf("You live at %s\n",Fred);
else if(strcmp(name,"Pete")==0);
printf("You live at %s\n",Pete);
else if(strcmp(name,"Mark")==0);
printf("You live at %s\n",Mark);
Run Code Online (Sandbox Code Playgroud)
有没有办法通过编写跳过所有strcmps():
printf("You live at %s\n",<SOMETHING_HERE>Name)
Run Code Online (Sandbox Code Playgroud)
我的需求更复杂,但上面这个简单的例子应该让我走了.我了解它已经将近15年,但我记不起来了.提前致谢!担
nav*_*tor 11
样品:
#include <map>
#include <string>
#include <iostream>
int main()
{
typedef std::map< std::string, std::string > MapType;
MapType names;
names.insert(std::make_pair("Fred", "1234 Evergreen Terrace"));
names.insert(std::make_pair("Pete", "4567 State Street"));
names.insert(std::make_pair("Mark", "123 North Street"));
std::string input;
std::cin >> input;
MapType::iterator it = names.find(input);
if(it != names.end())
std::cout << input << "lives at: " << it->second << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)