C++;-接受用户输入作为函数调用 我有一个C++程序,它有六个函数,它对文件系统的实现执行动作。我对这些功能没有异议-这是一个学校项目,我的问题是关于测试方法。我需要接受基本上是函数调用的“命令”,比如“write(test.dat,128KB)”或“read(test.dat)”

C++;-接受用户输入作为函数调用 我有一个C++程序,它有六个函数,它对文件系统的实现执行动作。我对这些功能没有异议-这是一个学校项目,我的问题是关于测试方法。我需要接受基本上是函数调用的“命令”,比如“write(test.dat,128KB)”或“read(test.dat)”,c++,command-line,command,user-input,function-call,C++,Command Line,Command,User Input,Function Call,我已经找到了使用switch语句根据输入调用函数的解决方案,但是由于每个命令都有自己的参数,在我的例子中这是不可能的。有没有办法将用户输入转换为函数调用?我能想到的唯一方法是解析字符串并提取要调用的函数,然后使用switch语句调用该函数,然后分别提取参数并将其传递给函数,但这似乎效率低下。是否还有一种完全不同的更好的方法可以做到这一点?解析命令文本。您将获得命令名和参数(可能是所有字符串) 查找该命令的处理程序。它可能有一个“验证器”或“参数类型解析器”阶段,也可能只有一个调用 调用命令,将参

我已经找到了使用switch语句根据输入调用函数的解决方案,但是由于每个命令都有自己的参数,在我的例子中这是不可能的。有没有办法将用户输入转换为函数调用?我能想到的唯一方法是解析字符串并提取要调用的函数,然后使用switch语句调用该函数,然后分别提取参数并将其传递给函数,但这似乎效率低下。是否还有一种完全不同的更好的方法可以做到这一点?

解析命令文本。您将获得命令名和参数(可能是所有字符串)

查找该命令的处理程序。它可能有一个“验证器”或“参数类型解析器”阶段,也可能只有一个调用

调用命令,将参数的
向量
传递给它(作为字符串或参数类型解析器生成的
boost::variant
s)


调用方可以用已知的参数包装函数,将<代码>向量< /代码>转换为C++调用。奇特的模板元编程可以在不进行半手工编写的情况下实现,但除非您有一个工业规模的程序,否则可能不值得这样做。

这是一个设计问题。有专门解决这些问题的设计模式…策略是我脑海中出现的一种模式。。。