用swig将Python2 Unicode转换为std :: string的方式

问题描述 投票:0回答:1

#define SWIG_PYTHON_2_UNICODE在python2中不起作用,这是文件.i,PyUnicode_FromString可以将标准字符串映射为unicode

%include <std_pair.i> 
%include <std_vector.i> 
%include <std_string.i> 
%template() std::pair<std::string,int>; 
%template(PairVector) std::vector<std::pair<std::string,int> >; 
%template(StringVector) std::vector<std::string>;

%begin %{
#define SWIG_PYTHON_2_UNICODE
%}

%{ 
#include "example.h" 

%} 
 %typemap(out) std::string %{
$result = PyUnicode_FromString($1.c_str());
%}

%include "example.h" 

如何在swig中将python2 unicode字符串转换为c ++ std :: string?

python-2.7 c++11 ctypes swig swig-template
1个回答
0
投票
 %include <std_pair.i> 
 %include <std_vector.i> 
 %include <std_wstring.i> 
 %template() std::pair<std::wstring,int>; 
 %template(PairVector) std::vector<std::pair<std::wstring,int> >; 
 %template(StringVector) std::vector<std::wstring>;

 %begin %{
 #define SWIG_PYTHON_2_UNICODE
 %}

 %{ 
    #include "example.h" 

 %} 


  %include "example.h" 

wstring起作用

© www.soinside.com 2019 - 2024. All rights reserved.