我有一些数据缓冲区,一个
PyByteArray
,我想提取
char *
从…起然后我想获取这个char*并从中创建一个stringstream。
void CKKSwrapper::DeserializeContext(PyObject *obj) {
// Is a PyByteArray object as determined by https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Check
PyObject_Print(obj, stdout, Py_PRINT_RAW); // 1
const char *s = PyByteArray_AsString(obj); // 2
std::cout << "Converted bytearray to string" << std::endl; // 3
std::cout << s << std::endl; // 4
std::istringstream is(s); // 5
lbcrypto::CryptoContext<lbcrypto::DCRTPoly> new_cc; // 6
Serial::Deserialize(new_cc, is, SerType::BINARY); // 7
}
二线
const char *s = PyByteArray_AsString(obj);
输出单个字符。从上一个问题
C++ c_str of std::string returns empty
(标题不准确),我知道输入对象的基础数据,
PyObject *obj
有
NULL
里面的人物。
基于
API
我看不到任何立即的解决办法。有人有什么建议吗?
注意:从当前代码库中,我需要从
Server: (C++ -> Python) -> (sockets) -> Client: (Python -> C++)
所以我真的无法绕过这个物体。