TCLAP issus解析std :: wstring

时间:2011-05-12 15:11:40

标签: c++

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个警告

1 个答案:

答案 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的所有者扩展它以支持广泛和狭隘的论点。