#include <iostream> #include <map> #include <cstring> #include <vector> using namespace std; // 根据空格 分割字符串 static vector<string> getTokens(string s) { vector<string> arr; char tmp[101]; #pragma warning(disable : 4996) strcpy(tmp, s.c_str()); #pragma warning(disable : 4996) char* token = strtok(tmp, " "); while (token) { arr.push_back(token); #pragma warning(disable : 4996) token = strtok(NULL, " "); } return arr; } // 判断文本是否在 命令中 static bool isEnable(vector<string> arr, string s) { vector<string> keys = getTokens(s); if (arr.size() > 2) return false; for (int i = 0; i < 2; i++) { if (arr[i][0] != keys[i][0] || keys[i].find(arr[i]) == string::npos) return false; } return true; } int main() { string a; map<string, string> dict; dict["reset board"] = "board fault"; dict["board add"] = "where to add"; dict["board delete"] = "no board at all"; dict["reboot backplane"] = "impossible"; dict["backplane abort"] = "install first"; string unknownCommand = "unknown command"; while (getline(cin, a)) { vector<string> arr = getTokens(a); if (arr.size() == 1) { string reset = "reset"; string str = arr[0]; if (str[0] == 'r' && reset.find(str) != string::npos) { cout << "reset what" << endl; } else { cout << unknownCommand << endl; } } else { string comstring = unknownCommand; int count = 0; for (auto str : dict) { if (isEnable(arr, str.first)) { comstring = str.second; count++; } } if (count == 1) cout << comstring << endl; else cout << unknownCommand << endl; } } return 0; }