居然没有用过命令行?那你怎么会关注这篇文章呢?我晕。
你看,司机师傅安按个按钮,门就开了,按那个按钮, 就唱歌。 按钮实际对应一个命令,真正解析并执行这个命令的,是里面的函数。在windows的cmd中,输入一个命令,就可以执行对应的功能,那个黑色的界面会把人的想法传给系统,系统来处理。下面,我们利用STL中的map来模拟简单的命令行,主要是了解map的功能和用法。在实战中,map的应用相当广泛。当然,在面试的时候,你也可以吹一下,自己用过map.
#pragma warning(disable : 4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef void (*cmdFun)();
typedef map<string, cmdFun> strMapFunc;
typedef map<string, cmdFun> :: iterator It;
strMapFunc g_map;
void dirFunc()
{
cout << "List all files and folders." << endl;
}
void cdFunc()
{
cout << "Change to specified directory." << endl;
}
void mkdirFunc()
{
cout << "Make a new directory." << endl;
}
void initialize()
{
g_map.insert(make_pair(string("dir"), &dirFunc));
g_map.insert(make_pair(string("cd"), &cdFunc));
g_map.insert(make_pair(string("mkdir"), &mkdirFunc));
}
int main()
{
initialize(); // 千万别忘记初始化
char cmd[100];
while(1)
{
gets(cmd);
It it = g_map.find(string(cmd));
if(g_map.end() != it)
{
cmdFun fun = it->second;
fun();
}
else
{
cout << "Not support." << endl;
}
}
return 0;
}