0

Python 正在调用一个 C++ 函数(使用 swig 包装)。

C++:

  std::wstring getFilePathMultiByte();

我可以在python中调用这个函数。问题是如何使用这个返回的 wstring?想要将文件名附加到此路径,这会产生错误,如下面的输出所示。

Python:

  path = getFilePathMultiByte()
  print path, type(path)
  file = path + "/Information.log"

输出:

_2012ad3900000000_p_std__wstring, type 'SwigPyObject'
TypeError: unsupported operand type(s) for +: 'SwigPyObject' and 'str'

如何在 python 中创建 std::wstring?这可能允许我进行连接。

谢谢。

4

1 回答 1

2

以下示例在我的机器上使用 SWIG 2.0 按预期工作:

%module test

%include "std_wstring.i"

%inline %{
  std::wstring foo() {
    return L"hi";
  }
%}

然后我测试了:

Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
>>> path = test.foo()
>>> print path, type(path)
hi <type 'unicode'>
>>> file = path + "/Information.log"
>>> print file
hi/Information.log
>>>

我不确定你在这里做错了什么——我猜你没有得到%include "std_wstring.i",但鉴于你所展示的内容,很难确定。

于 2012-08-01T21:01:35.020 回答