我正在尝试将c++项目从boost转换为pybind11
QString r = QString(PyString_AsString(result));" QString r = QString(py::str(result));
dxxyhpgq1#
在Pybind11中,你需要通过一个std::string
std::string
QString r = QString(result.cast<std::string>().c_str());"
当然,你也可以自己使用PyString_AsString:
PyString_AsString
QString r = QString(PyString_AsString(result.ptr());
PyString_AsString来自一个Python版本,该版本已经完全不受支持超过2年。你应该考虑是否应该使用它。
ao218c7q2#
为了补充上述答案,请避免使用PyString_AsString,这是一个原始的C Python API调用。将python字符串转换为std::string
std::string intermediateStdString = std::string(py::str(result));
然后您可以将std::string转换为QString
QString
QString finalQString = QString::fromStdString(intermediateStdString));
2条答案
按热度按时间dxxyhpgq1#
在Pybind11中,你需要通过一个
std::string
当然,你也可以自己使用
PyString_AsString
:PyString_AsString
来自一个Python版本,该版本已经完全不受支持超过2年。你应该考虑是否应该使用它。ao218c7q2#
为了补充上述答案,请避免使用
PyString_AsString
,这是一个原始的C Python API调用。将python字符串转换为
std::string
然后您可以将
std::string
转换为QString