从暴露给Python的C ++函数返回int或字符串

罗布·琼脂

使用Boost Python,暴露给python的C ++函数是否可能根据传入的单个参数返回整数或字符串(或其他类型)

所以在Python中我想这样做:

from my_module import get_property_value     

# get an integer property value
i = get_property_value("some_int_property")

# get a string 
s = get_property_value("some_string_property")

C ++伪代码(显然,它不会像这样工作,但您会明白的)

???? getPropertyValue(const char* propertyName)
{
  Property *p = getProperty(propertyName);
  switch(p->type)
  {
    case INTEGER: return p->as_int();
    case STRING: return p->as_string();
    ...
  }
}


BOOST_PYTHON_MODULE(my_module)
{
  boost::python::def("get_property_value", &getPropertyValue);
}

如果有什么不同,我将在Python 3.2中使用Boost 1.48。

坦纳·桑斯伯里(Tanner Sansbury)

让C ++函数返回boost::python::objectobject构造函数将尝试将其参数转换为适当的Python类型和管理一个参考吧。例如,boost::python::object(42)将返回Python类型为的Python对象int


这是一个基本示例:

#include <boost/python.hpp>

/// @brief Get value, returning a python object based on the provided type
///        string.
boost::python::object get_value(const std::string& type)
{
  using boost::python::object;
  if      (type == "string") { return object("string 42"); }
  else if (type == "int")    { return object(42);          }
  return object(); // None
}

BOOST_PYTHON_MODULE(example)
{
  namespace python = boost::python;
  python::def("get_value", &get_value);
}

及其用法:

>>> import example
>>> x = example.get_value("string")
>>> x
'string 42'
>>> type(x)
<type 'str'>
>>> x = example.get_value("int")
>>> x
42
>>> type(x)
<type 'int'>
>>> x = example.get_value("")
>>> x
>>> type(x)
<type 'NoneType'>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从暴露给Python的C ++函数返回int或字符串

来自分类Dev

从Python函数返回字符串

来自分类Dev

Python函数返回字符串

来自分类Dev

从C函数返回字符串

来自分类Dev

C函数不返回字符串

来自分类Dev

C函数返回串联字符串

来自分类Dev

C函数返回串联字符串

来自分类Dev

返回int并存储到字符串c ++中的调用函数

来自分类Dev

使用boost :: python将虚拟成员函数从C ++暴露给Python

来自分类Dev

C字符串返回函数返回垃圾

来自分类Dev

从C中的函数返回C字符串

来自分类Dev

从Rust函数返回字符串到Python

来自分类Dev

从Python调用Go字符串返回函数

来自分类Dev

python 3.5.1不会从函数返回字符串

来自分类Dev

Python:从字符串末尾开始返回索引的函数

来自分类Dev

python递归函数返回none而不是字符串

来自分类Dev

简单的C程序。从函数返回的字符串导致错误

来自分类Dev

TCL库从C ++函数返回字符串

来自分类Dev

C字符串函数参数返回时为NULL

来自分类Dev

C ++:打印函数返回的字符串向量

来自分类Dev

C ++,从函数返回字符串;boost :: asio读/写

来自分类Dev

从c中的参数函数返回未知大小的字符串

来自分类Dev

在C中返回字符串数组的函数

来自分类Dev

如何从函数返回C字符串并显示它

来自分类Dev

C字符串函数参数返回时为NULL

来自分类Dev

TCL库从C ++函数返回字符串

来自分类Dev

如何从C中的函数返回字符串

来自分类Dev

c ++ 基于模板字符串文字返回的函数指针

来自分类Dev

C ++将字符串转换为int函数