C++ 在Boost.ProgramOptions中使用类似gettext的翻译
我试图提供C++ 在Boost.ProgramOptions中使用类似gettext的翻译,c++,boost,boost-program-options,boost-locale,C++,Boost,Boost Program Options,Boost Locale,我试图提供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")) ;
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\u description\u easy\u init
的实例,该实例预先定义了()
运算符,以便您可以使用上述语法。现在,这个操作符只接受constchar*
作为描述,这让我很恼火。因此,我有以下问题:
const char\u type*
作为描述参数的基本原理是什么option\u 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;
std::字符串m_short_name、m_long_name、m_description;
//需要共享的ptr来简化内存管理
//复制构造函数和析构函数。
共享值语义;
std::string
会更干净
您可以向库提供带有推理的pull请求
维修人员
option\u 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;
std::字符串m_short_name、m_long_name、m_description;
//需要共享的ptr来简化内存管理
//复制构造函数和析构函数。
共享值语义;
std::string
会更干净
您可以向库提供带有推理的pull请求
维修人员
每次一个问题每次一个问题我真的不喜欢用
translate(“abc”).str().c_str()
的方法。由于设计上的改变,我有幸改用msg.c_str()
。至于基本原理——const char*
只是阻止你犯许多错误中的一个(例如使用\b
等)。我看不出其中的道理。话虽如此,我感谢你的回答-谢谢你。就像我说的,你有一个观点,你可以向开发者提出。我相信他们欢迎你的意见。不管怎样,你的问题也是关于安全的。我回答说,这很安全。我真的不喜欢用translate(“abc”).str().c_str()
的方法。由于设计上的改变,我有幸改用msg.c_str()
。至于基本原理——const char*
只是阻止你犯许多错误中的一个(例如使用\b
等)。我看不出其中的道理。话虽如此,我感谢你的回答-谢谢你。就像我说的,你有一个观点,你可以向开发者提出。我相信他们欢迎你的意见。不管怎样,你的问题也是关于安全的。“很安全,”我回答说。