使用C++从MongoDb中检索binData记录

retrieve a binData record from MongoDb using C++

本文关键字:检索 binData 记录 MongoDb C++ 使用      更新时间:2023-10-16

有人能告诉我一个如何使用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));