居然没有用过命令行?那你怎么会关注这篇文章呢?我晕。
你看,司机师傅安按个按钮,门就开了,按那个按钮, 就唱歌。 按钮实际对应一个命令,真正解析并执行这个命令的,是里面的函数。在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;
- }