【问题标题】:Simple front end for scientific code科学代码的简单前端
【发布时间】:2015-01-14 05:58:20
【问题描述】:

目前我有一个程序,我通过命令行将一些参数和文件传递给主可执行文件

例如我将通过

运行模拟

./exe param1 param2 param3 ..等

但是为了让这段代码对用户更友好,我想要一个系统,你可以加载参数文件,并在它们上运行模拟,这似乎是科学代码的共同点

现在我想转移到一个可以运行类似

的系统

./exe 模拟.params

我想创建一个包含我所有参数的类

class Parameter {
    //objects that are parameters 
}

然后在我的主程序中传递它,类似于从文件中的变量到模拟中的变量的映射。主程序只是循环输入文件中的每一行,读取信息并初始化这个类。

另外,在交互式 shell 中运行程序或只传递文件会很好。也许只是检查给定的文件(带有一些必要的检查)然后运行,或者只是启动一个交互式会话,

大概

int main()
{
   if(argc== 1)
   {
    // run simulation on file
   }
   else
   {
     //bring up some menu 
   }

}

这些是好的做法吗?大部分参数都是数字,有推荐的格式吗?还有其他有用的库可以帮助实现这样的事情吗?用python之类的东西创建前端会更好吗?

【问题讨论】:

  • 这里不适合提出这样的问题(不幸的是我不知道在哪里......)。如果你带着“我正在做 X 并使用方法 Y,但在使用 Z 时遇到了麻烦”,那么你会得到更好的回应。

标签: python c++ frontend


【解决方案1】:

我建议您引入参数名称,其中之一可以是带有设置的文件名。此外,最好不要只坚持基于文件或基于 arg 的设置,而是允许文件设置被命令行参数覆盖。基本上你的初始化看起来像这样:

  • 处理命令行参数
  • 从文件中加载配置(如果存在)
  • 从命令行应用配置值

有一个很好的函数 getopt,在 POSIX 标准中定义(这意味着 - 在标准库中可用)。 GNU 提供了名为 getopt_long 的扩展,它允许你也有像“--param”这样的“长”选项。有关 getopt/getopt_long 的更多信息,并提供示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2016-11-17
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多