3

Python の C 拡張では、次のPy_BuildValue()ように char 文字列を Python 値に変換するために使用できますPy_BuildValue("s", str)。ただし、文字列が wchar 配列の場合はPy_BuildValue("s", str)使用できません。

次のように PyUnicode を使用できると思います。

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );
PyObject *val = Py_BuildValue("o", pb);

しかし、うまくいきません。wchar文字列をPython値に変換するにはどうすればよいですか?

4

1 に答える 1

2

PyUnicode_FromUnicodeとを組み合わせる必要はないと思いますPy_BuildValue

以下pbはすでに Python Unicode オブジェクトです。

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );

を使用Py_BuildValueして処理するのは冗長ですが、無害です。あなたの問題は、フォーマットが正しくないことが原因だと思いますo。である必要がありますO

Py_BuildValueを使用して、Unicode (UCS-2 または UCS-4) データのヌル終了バッファーを Python Unicode オブジェクトに変換することもできます。
例えば:

const wchar_t *w = L"Hello world!";
PyObject* pb = Py_BuildValue("u", w);

もっと

于 2013-03-01T08:53:54.113 に答える