gpt4 book ai didi

c++ - 是否有一些类似于 boost program_options 但用于 *keyboard shortcut auto-gen help* 的 c++ 库/源代码?

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:14 24 4
gpt4 key购买 nike

所以,我有一些带有键绑定(bind)的 C++ 源代码,例如:

  switch( keypressed )
{
case 'c':
cam_handle->Yaw(min_angle );
break;
case 'd':
cam_handle->Yaw( -min_angle );
break;
case 's':
cam_handle->Pitch(min_angle );
break;
case 'x':
cam_handle->Pitch( -min_angle );
break;
case 'z':
cam_handle->Roll( min_angle );
break;
case 'a':
cam_handle->Roll( -min_angle );

我总是忘记愚蠢的键是什么,不得不猜测,它们可能会改变,或者添加新的键,等等。有没有一些快速的方法来自动生成帮助或一个“白痴指南”弹出窗口说什么捷径是?如果有人不知道 boost::program_options 但可以回答,这里有一个例子:

int options(int ac, char ** av, Options& opts) {
// Declare the supported options.
po::options_description desc("Allowed options");
desc.add_options()
("help", "Produce help message.")
("width,w", po::value<int>(&opts.frameWidth)->default_value(640),"frame width")
("height,h", po::value<int>(&opts.frameHeight)->default_value(480),"frame height")
("port,p", po::value<string>(&opts.port)->default_value("5001"),"port");

po::variables_map vm;
po::store(po::command_line_parser(ac, av).options(desc).allow_unregistered().run(),vm);
po::notify(vm);

if (vm.count("help")) {
cout << desc << "\n";
return 1;
}

return 0;
}

因此,我不必“RTFC”就知道如何使用可执行文件,我只需说“./myapp --help”,boost 会很好地自动生成帮助等等。键盘快捷键映射是否有类似的东西,其中击键取代了命令行标志的作用? (在 C++ 中。原则上 C 也可以,但我怀疑它是否像 boost 一样优雅。)

最佳答案

在我看来,这是两双不同的鞋子。如果您想创建和发布有关您的应用程序的文档,我认为通过 --help 选项使其可访问可能不是最好的选择。这对于小程序来说可能没问题,但是 boost::program_options 肯定不是处理这个问题的最佳方式。

如果你想做一个 --help 开关,你必须为你的 查找 argcargv 参数主要函数:

int main(int argc, char** argv)
{
for(int i = 0; i < argc; ++i)
{
if(std::string(argv[i]) == "--help")
{
// TODO print usage keys and quit
}
}
...
}

我认为,理想的方法是使键可配置,并将使用相应键的操作保存到配置文件中,该文件在您的应用程序中进行解释。因此,用户始终可以看到适用于您的应用程序的操作,还可以对其进行配置。

关于c++ - 是否有一些类似于 boost program_options 但用于 *keyboard shortcut auto-gen help* 的 c++ 库/源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com