【问题标题】:C++ - Accepting user input as a function callC++ - 接受用户输入作为函数调用
【发布时间】:2014-05-19 03:07:00
【问题描述】:

我有一个带有六个函数的 C++ 程序,它们对文件系统的实现执行操作。我对这些功能没有任何问题——这是一个学校项目,我的问题在于测试方法。我需要接受基本上是函数调用的“命令”——例如“write(test.dat,128KB)”或“read(test.dat)”。

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

【问题讨论】:

  • 这是一个设计问题。有一些设计模式旨在专门解决这些问题...策略是我想到的一种模式...

标签: c++ command-line command user-input function-call


【解决方案1】:

解析命令文本。你会得到一个命令名称和参数(可能是所有字符串)。

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

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

调用者可以用已知参数包装函数并将vector 转换为C++ 调用。花哨的模板元编程可以在不半手动编写的情况下发生这种情况,但除非你有一个工业规模的程序可能不值得。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2022-10-23
    • 2018-09-19
    相关资源
    最近更新 更多