如何从 PyObject 获取指向字符串的 char*

2024-05-12

我怎样才能得到一个char* from a PyObject它指向一个字符串。例如,这是 python 脚本,

Test.Connect("272.22.20.65", 1234)

这是 C++ 代码,

static PyObject* Connect(PyObject *self, PyObject *args)
{
    PyObject* pIP;
    PyObject* pPort;

    if (!PyArg_UnpackTuple(args, "Connect", 2, 2, &pIP, &pPort)) 
    {
        return NULL;
    }

    const char* zIP = GetAsString(pIP);
    long iPort      = PyLong_AsLong(pPort);

我想以 char* 形式获取该 IP 地址(GetAsString 是一个虚拟函数 :D )。请注意,我使用的是 Python 3.1。

附: 我不认为this https://stackoverflow.com/questions/570781/python-c-api-and-unicode-strings问题得到了正确答案, 因为没有PyString对象 or PyString_AsString在 Python 3 中。不是吗?


首先你编码它 http://docs.python.org/py3k/c-api/unicode.html#PyUnicode_AsUTF8String, 然后你检索它 http://docs.python.org/py3k/c-api/bytes.html#PyBytes_AsString。不要忘记取消临时的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 PyObject 获取指向字符串的 char* 的相关文章

随机推荐