包装方法在cython中返回c ++ std :: array <std :: string,4 =“”>

时间:2016-09-01 13:19:34

标签: python c++ arrays string cython

我的方法在C ++代码中返回std::array<std::string, 4>。我使用Cython包装此代码。我试图使用内存视图包装数组。但结果是Invalid base type for memoryview slice: string。那么我可以将std::array<std::string, 4>包装在python中使用它,就像strs列表一样吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法可能只是复制到Python列表。

为了这个答案,我假设你已经将你的数组包裹起来,类似于this answer并称之为arrstr4。然后代码看起来像:

def f():
    cdef arrstr4 res = your_cplus_plus_function()
    py_res = []
    for i in range(4):
        py_res.append(res[i]) # take advantage of autoconversion to python string
    return py_res