python-2.7 - 使用 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?
解决方案
%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 工作
推荐阅读
- r - 无需在 R 中使用 for 循环即可计算特定索引的有效方法
- python - 比较 defaultdict(list) 的每个元素并找到匹配的元素
- amazon-web-services - 使用 currentAuthenticatedUser() 在 Amplify 中刷新会话
- ruby-on-rails - Rails 服务器在起点出现错误
- javascript - 如何在 C# 中拒绝来自客户端的非 UTC/GMT 日期?
- palantir-foundry - 循环遍历表列表并使用表名保存到 csv
- python - python plotly fig.write_image() 没有响应
- amazon-web-services - 从 s3 部署包结构问题上传 cloudformation lambda 函数
- spring - Spring @Autowire on 方法
- websocket - 客户端在 apache 上断开连接并请求数据后,服务器正在自行发起 GET 请求