目录
- 背景
背景
在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过命令行输入命令的方式完成测试验证,将大大提升工作效率,下面的示例程序是一个简单的命令行交互框架,各位小伙伴可以根据自己的需求添加命令即可,如果对你有帮助,请点赞、收藏,谢谢!
#include <iostream>
#include <string>
#include <vector>
#include <sstream> /* 假设的命令处理函数 */
void commandHelp() { std::cout << "Available commands:\n" << " help - Display this help message\n" << " echo <arg> - Echo the argument back to you\n" << " quit - Exit the program\n";
} void commandEcho(const std::string& arg) { std::cout << "Echo: " << arg << std::endl;
} /* 主命令处理函数 */
void processCommand(const std::string& command, const std::vector<std::string>& args) { if (command == "help") { commandHelp(); } else if (command == "echo") { if (args.empty()) { std::cout << "Error: 'echo' requires an argument\n"; } else { commandEcho(args[0]); } } else if (command == "quit") { std::cout << "Exiting the program...\n"; exit(0); } else { std::cout << "Unknown command: " << command << std::endl; }
} /* 解析命令行参数 */
std::vector<std::string> parseArguments(const std::string& line) { std::istringstream iss(line); std::string token; std::vector<std::string> args; while (std::getline(iss, token, ' ')) { if (!token.empty()) { args.push_back(token); } } return args;
} int main() { std::string commandLine; while (true) { std::cout << "> "; std::getline(std::cin, commandLine); if (commandLine.empty()) { continue; } std::vector<std::string> args = parseArguments(commandLine); if (args.empty()) { continue; } std::string command = args[0]; args.erase(args.begin()); /* 移除命令本身,只保留参数 */ processCommand(command, args); } return 0; /* 这行代码实际上永远不会被执行,因为我们在'quit'命令中调用了exit() */
}