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

时间:2012-07-30 17:23:52

标签: c++ mongodb

有人可以请一个关于如何使用C ++从MongoDb检索binData记录的示例吗?
我尝试了这段代码,但返回垃圾:

char* arrS;

while (dbResult->more())
{
    record = dbResult->next();
    strcpy(arrS, record.getField("s").binData(iLen));
}

“s”是我的binData字段。 提前感谢您,任何建议都非常感谢。

2 个答案:

答案 0 :(得分:0)

参数iLen实际上是binData的(第二个)返回值。您可以像这样提取二进制内容:

int iLen;
const char* p = record["s"].binData(len);
std::string content(p, iLen);

答案 1 :(得分:-1)

.binData()返回一个const char *,因此它应该返回一个指向二进制数据的指针。您只需将其复制到缓冲区中,无论是显式分配还是动态缓冲区,如字符串。

例如

std::string arrS;
int iLen = 0;
arrS = record.getField("s").binData(iLen);

我不确定iLen参数 - 通常这个模式用于传递缓冲区长度的值并返回复制的字节数,但是docs don't mention it

如果是这样,您需要分配一个缓冲区:

char arrS[1000];
int iLen = sizeof(arrS);
memcpy(arrS, record.getField("s").binData(iLen));