How can I get a char* from a PyObject which points to a string. For example, this is the python script,
Test.Connect("272.22.20.65", 1234)
and this is the C++ code,
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);
I want to get that IP address as a char* (GetAsString is a dummy function :D ). Please note that I'm using Python 3.1.
P.S. I don't think this question got the correct answer , since there is no PyStringObject or PyString_AsString in Python 3. Isn't it ?
First you encode it, then you retrieve it. Don't forget to decref the temporary.
Here is my portable recipe for it, which makes use the default encoding, where that is applicable. It assumes you start with a
PyObject*
, namedo
. If you still have your input tuple from the function call, you can skip the first 2 lines.PS: I have not tested it, but it should work with older versions of Python as well. There is nothing on it which is version specific.