python - 将 C++ 字符串类转换为 Python 字符串

标签 python c++ swig

我有一个能够以普通 ASCII 或宽格式输出字符串的 C++ 类。我想将 Python 中的输出作为字符串获取。我正在使用 SWIG(版本 3.0.4)并阅读了 SWIG 文档。我相信我需要使用 typemap 构造来实现我的目标。我写了以下内容:

%typemap(out) my_namespace::MyString *
{
  $result = PyString_AsString($1);
}

没有成功。当我尝试从 Python 访问 C++ 字符串时,我得到以下输出:

<Swig Object of type 'MyString *' at 0x02B6FC68>

显然,我做错了什么。谁能指出我正确的方向?提前致谢。

最佳答案

我将 pyboost 用于 C++/python 接口(interface),这非常棒而且很容易做到。如果可以,我推荐它。一个简单的 std::string 会自动映射到 python 字符串。在您的情况下,可能任何解决方案都是定义一个

__str __

对象的方法或直接传递一个 char*(我在 swig 文档中看到,但我从未遵循这种方式)。

关于python - 将 C++ 字符串类转换为 Python 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391105/

相关文章:

python - 在 SWIG 中为包含 union 的结构创建类型映射 (Python)

c# - SWIG:生成 C# 包装器时 SWIGTYPE_p_void 未定义

tokenize 模块中的 Python 2 换行符

python - 在 Django admin 中显示 ManyToMany 关系的双方

c++ - QT C++中对全局变量的 undefined reference

c++ - 具有确定性程序的未定义行为

c++ - 如何使用 SWIG 和 CGO 将 io.Reader 转换为 std::istream?

python - 为什么将 pandas 导入为 pd 是惯例?

python - Python 函数可以只返回两个值中的第二个吗?

c++ - getrusage() 获取系统时间、用户时间。 Unix编程帮助