首页 > 解决方案 > 使用 swig 将 Python2 Unicode 转换为 std::string 的方法

问题描述

#define SWIG_PYTHON_2_UNICODE 在 python2 中不起作用,这是文件 .i,PyUnicode_FromString 可以将 std 字符串映射到 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.7c++11ctypesswigswig-template

解决方案


 %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 工作


推荐阅读