簡體   English   中英

是否有一些類似於boost program_options的c ++庫/源代碼,但是提供了*鍵盤快捷鍵自動生成幫助*?

[英]is there some c++ library / source similar to boost program_options but for *keyboard shortcut auto-gen help* ?

因此,我有一些帶有鍵綁定的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開關,則必須查找main函數的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
        }
    }
    ...
}

我認為,理想的方法是使鍵可配置,並將具有相應鍵的操作保存到配置文件中,該文件在您的應用程序中進行解釋。 因此,用戶始終可以看到可用於您的應用程序的操作,也可以對其進行配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM