TCLAP issus解析std :: wstring

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吐出不少问题)。 我的问题是有人尝试使用TCLAP的std :: wstring。 如果是,你可以发布解决方案或方法。 谢谢。

编辑 - 我得到的编译器警告是 -

C: DevProjects MyProjects nttoolkit trunk external tclap / StandardTraits.h(187):错误C2679:二进制'=':找不到操作符,其类型为'const std :: string'的右侧操作数或者没有可接受的转换)

    c:Program Files (x86)Microsoft Visual Studio

9.0 VC include xstring(914):可以是'std :: basic_string <_Elem,_Traits,_Ax>

&的std :: basic_string的<_Elem,_Traits,_AX> ::操作者

=(const std :: basic_string <_Elem,_Traits,_Ax>&)'与[_Elem = wchar_t,_Traits = std :: char_traits,_Ax = std :: allocator]

    c:Program Files (x86)Microsoft Visual Studio

9.0 VC include xstring(919):or'std :: basic_string <_Elem,_Traits,_Ax>&std :: basic_string <_Elem,_Traits,_Ax> :: operator =(const _Elem *)'with [_Elem = wchar_t ,_Traits = std :: char_traits,_Ax = std :: allocator]

    c:Program Files (x86)Microsoft Visual Studio

9.0 VC include xstring(924):或'std :: basic_string <_Elem,_Traits,_Ax>&std :: basic_string <_Elem,_Traits,_Ax> :: operator =(_ Elem)'与[_Elem = wchar_t,_Traits = std :: char_traits,_Ax = std :: allocator]试图匹配参数列表'(std :: wstring,const std :: string)'

    C:DevProjectsMyProjectsnttoolkittrunkexternaltclap/Arg.h(446)

:参见函数模板实例化'void TCLAP :: SetString(T&,const std :: string&)'正在编译时使用[T = std :: wstring]

    C:DevProjectsMyProjectsnttoolkittrunkexternaltclap/ValueArg.h(391)

:参见使用[T = std :: wstring]编译的函数模板实例化'void TCLAP :: ExtractValue(T&,const std :: string&,TCLAP :: StringLike)

    C:DevProjectsMyProjectsnttoolkittrunkexternaltclap/ValueArg.h(389)

:使用[T = std :: wstring]编译类模板成员函数'void TCLAP :: ValueArg :: _ extractValue(const std :: string&)'

    C:DevProjectsMyProjectsnttoolkittrunkexternaltclap/ValueArg.h(325)

:当用[T = std :: wstring,_Ty = std :: string]编译类模板成员函数'bool TCLAP :: ValueArg :: processArg(int *,std :: vector <_Ty>&)

    C:DevProjectsMyProjectsnttoolkittrunkexternaltclap/UnlabeledValueArg.h(44)

:请参阅类模板的参考

使用[T = std :: wstring]编译实例化'TCLAP :: ValueArg'

    C:DevProjectsMyProjectsnttoolkittrunktasksecuresrcmain.cpp(26)

:参见使用[T = std :: wstring]编译的类模板实例化'TCLAP :: UnlabeledValueArg'的引用

TaskSecure - 1个错误,6个警告(s)


我下载了源代码并构建了您的示例。 UnlabeledValueArg确实采取std :: string,所以道歉。 StandardTraits.h:202显示dst = src。 它试图将std :: string设置为std :: wstring,并且没有转换。 显然,TCLAP不支持std :: wstring。 src应该是std :: wstring。

一个解决方法可能是使用std :: string,而UTF-8在使用TCLAP之前对程序的参数进行编码。

另一种选择是要求TCLAP的所有者扩展它以支持广泛和狭义的论点。

链接地址: http://www.djcxy.com/p/68423.html

上一篇: TCLAP issus with parsing std::wstring

下一篇: Using std::tm as Key in std::map