这是铸造吗?

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

  • 使用std :: map of string - > string.
  • 从输入中取一个字符串
  • 如果它在地图中,则打印出来

样品:

#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)