TCLAP std::wstring
问题。
大家好,
我正在使用TCLAP(命令行解析实用程序)。到目前为止,它一直运行良好,直到遇到wstring处理能力的问题。
我有以下行来解析UnlabeledValueArg的代码
std::wstring defaultValue;
UnlabeledValueArg<std::wstring>
serverName("COMPUTERNAME", "List all scheduled tasks of computer", false,
defaultValue, "string" );
我遇到编译时问题(Visual Studio吐出了大量的问题。)。我的问题是有没有人尝试过使用std :: wstring和TCLAP。如果是,您可以发布解决方案或方法。谢谢。
编辑 - 我得到的编译器警告是 -
C:\ DevProjects \ MyProjects下\ nttoolkit \树干\外部\ tclap / StandardTraits.h(187) :错误C2679:二进制&#39; =&#39; :不 运营商发现哪个需要 类型&#39; const的右手操作数 的std :: string&#39; (或者没有 可接受的转换)
c:\Program Files (x86)\Microsoft Visual Studio
9.0 \ VC \包括\ xstring(914):可以是&#39;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT;
&安培;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; ::运算
=(const std :: basic_string&lt; _Elem,_Traits,_Ax&gt; &安培;)&#39; 同 [ _Elem = wchar_t的, _Traits =标准:: char_traits, _AX =标准::分配器 ]
c:\Program Files (x86)\Microsoft Visual Studio
9.0 \ VC \包括\ xstring(919):或&#39;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; &安培;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; ::运算 =(const _Elem *)&#39; 同 [ _Elem = wchar_t的, _Traits =标准:: char_traits, _AX =标准::分配器 ]
c:\Program Files (x86)\Microsoft Visual Studio
9.0 \ VC \包括\ xstring(924):或&#39;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; &安培;性病:: basic_string的&LT; _Elem,_Traits,_AX&GT; ::运算 =(_ ELEM)&#39; 同 [ _Elem = wchar_t的, _Traits =标准:: char_traits, _AX =标准::分配器 ] 同时尝试匹配参数列表&#39;(std :: wstring,const 的std :: string)&#39;
C:\DevProjects\MyProjects\nttoolkit\trunk\external\tclap/Arg.h(446)
:参见功能模板参考 实例化&#39;无效 TCLAP :: SetString(T&amp;,const std :: string&amp;)&#39;被编译 同 [ T =标准:: wstring的 ]
C:\DevProjects\MyProjects\nttoolkit\trunk\external\tclap/ValueArg.h(391)
:参见功能模板参考 实例化&#39;无效 TCLAP :: ExtractValue(T&amp;,const std :: string&amp;,TCLAP :: StringLike)&#39; 被编译 同 [ T =标准:: wstring的 ]
C:\DevProjects\MyProjects\nttoolkit\trunk\external\tclap/ValueArg.h(389)
:编译类模板时 会员职能&#39;无效 TCLAP :: ValueArg :: _ extractValue一起(常量 std :: string&amp;)&#39; 同 [ T =标准:: wstring的 ]
C:\DevProjects\MyProjects\nttoolkit\trunk\external\tclap/ValueArg.h(325)
:编译类模板时 会员功能&#39; bool TCLAP :: ValueArg :: processArg(INT *,性病::矢量&lt;&_Ty GT; &安培;)&#39; 同 [ T =标准:: wstring的, _Ty =的std :: string ]
C:\DevProjects\MyProjects\nttoolkit\trunk\external\tclap/UnlabeledValueArg.h(44)
:参见类模板
实例化&#39; TCLAP :: ValueArg&#39; 被编译 同 [ T =标准:: wstring的 ]
C:\DevProjects\MyProjects\nttoolkit\trunk\tasksecure\src\main.cpp(26)
:参见类模板的引用 实例 &#39; TCLAP :: UnlabeledValueArg&#39;存在 编译 同 [ T =标准:: wstring的 ]
TaskSecure - 1个错误,6个警告
答案 0 :(得分:2)
我下载了源代码并构建了您的示例。 UnlabeledValueArg确实采用了std :: string,所以道歉。 StandardTraits.h:202显示dst = src。它试图将std :: string设置为std :: wstring并且没有转换。显然,TCLAP不支持std :: wstring。 src应该是std :: wstring。
一种解决方法可能是使用std :: string,而UTF-8在使用TCLAP之前编码程序的参数。
另一种选择是要求TCLAP的所有者扩展它以支持广泛和狭隘的论点。