48

C python 拡張機能を持っているので、診断結果を出力したいと思います。

文字列を PyObject* として受け取っています。

const char * として使用できるように、このオブジェクトの文字列表現を取得する標準的な方法は何ですか?

更新:アクセスを const char * として強調するように明確化しました。

4

7 に答える 7

51

PyObject_Repr(Python のrepr機能を模倣するため) またはPyObject_Str(を模倣するため) を使用してから getstrを呼び出します(通常は、次のように使用できます。PyString_AsStringchar *const char*

PyObject* objectsRepresentation = PyObject_Repr(yourObject);
const char* s = PyString_AsString(objectsRepresentation);

この方法は、どのPyObject. yourObjectPython 文字列であり、数値などの他の何かではないことが絶対に確実な場合は、最初の行をスキップして、次のようにすることができます。

const char* s = PyString_AsString(yourObject);
于 2011-11-21T16:39:58.930 に答える
4

PyObject_Repr(Python の を模倣するrepr) またはPyObject_Str(Python の を模倣する) を試してくださいstr

ドキュメント:

オブジェクト o の文字列表現を計算します。成功した場合は文字列表現を返し、失敗した場合は NULL を返します。これは、Python の式 repr(o) に相当します。repr() 組み込み関数によって呼び出されます。

于 2011-03-18T19:20:26.880 に答える