有人可以指导我看一个关于如何使用 C++ 从 MongoDb 检索 binData 记录的示例吗?
我试过这段代码,但返回垃圾:
char* arrS;
while (dbResult->more())
{
record = dbResult->next();
strcpy(arrS, record.getField("s").binData(iLen));
}
“s”是我的 binData 字段。提前感谢您,任何建议都非常感谢。
该参数iLen
实际上是 的(第二个)返回值binData
。您可以像这样提取二进制内容:
int iLen;
const char* p = record["s"].binData(len);
std::string content(p, iLen);
.binData() 返回一个 const char* 所以它应该返回一个指向二进制数据的指针。您只需将其复制到缓冲区中,无论是显式分配的还是动态的,例如字符串。
例如。
std::string arrS;
int iLen = 0;
arrS = record.getField("s").binData(iLen);
我不确定 iLen 参数 - 通常这种模式用于传递缓冲区长度的值并返回复制的字节数,但文档没有提到它。
如果是这样,您需要分配一个缓冲区:
char arrS[1000];
int iLen = sizeof(arrS);
memcpy(arrS, record.getField("s").binData(iLen));