我试图提供std::string
参数作为选项的描述。一般而言,没有定义其生活范围的论证。在细节上,我想提供翻译。
using namespace boost::program_options;
using namespace boost::locale;
options_description desc (translate ("Hello world!"));
desc.add_options ()
("help", translate ("Veni vidi vici"))
;
add_options()
返回options_description_easy_init
的实例,该实例预先定义()
运算符,以便您可以使用上面的语法。现在,该运营商仅接受const char*
作为描述,这让我感到困惑。因此,我有以下问题:
这门课程的所有权政策是什么?这些指针只是存储,因此来源,应该与描述一样存在,或者它是安全的(哎呀!):
("help", translate ("Veni vidi vici").str ().c_str ())
仅将const char_type*
作为描述参数的理由是什么?
答案 0 :(得分:0)
你的名字,我个人建议Boost Locale http://www.boost.org/doc/libs/1_61_0/libs/locale/doc/html/messages_formatting.html,但也许你已经做了
如果没有记录任何内容,您可以假设该字符串已被复制。其他任何东西都是(文档)错误
检查
option_description
的代码并不太难,并且确实如此std::string m_short_name, m_long_name, m_description; // shared_ptr is needed to simplify memory management in // copy ctor and destructor. shared_ptr<const value_semantic> m_value_semantic;
这使得编译器很明显允许任何C风格的字符串/文字,同时向用户记录嵌入式NUL字符是不可能的(暗示您不能使用UCS2或类似字符)。除此之外,我同意将形式参数声明为std::string
更为干净。
您可以向库提供带有推理的拉取请求 维护者(S)