使用C++从MongoDb中检索binData记录
问题描述:
有人请指导我一个关于如何使用C++从MongoDb中检索binData记录的例子吗?
我尝试这样的代码,但返回的垃圾:使用C++从MongoDb中检索binData记录
char* arrS;
while (dbResult->more())
{
record = dbResult->next();
strcpy(arrS, record.getField("s").binData(iLen));
}
“S” 是我binData场。 在此先感谢您,任何建议都非常感谢。
答
.binData()返回一个const char *,所以它应该返回一个指向二进制数据的指针。您只需将其复制到缓冲区中,可以是明确分配的,也可以是动态的,如字符串。
例如。
std::string arrS;
int iLen = 0;
arrS = record.getField("s").binData(iLen);
我不知道的艾朗参数的 - 通常此图案用于在缓冲器长度的值来传递和返回复制的字节数,但docs don't mention it。
如果是这样,你需要分配一个缓冲区:
char arrS[1000];
int iLen = sizeof(arrS);
memcpy(arrS, record.getField("s").binData(iLen));
答
参数iLen
实际上是binData
(第二)的返回值。你可以像这样提取二进制内容:
int iLen;
const char* p = record["s"].binData(len);
std::string content(p, iLen);
'arrS'指向'strcpy'操作之前的任何有效内存位置吗?我相信你知道缓冲区溢出。 – Mahesh 2012-07-30 17:32:17