2

誰かがC++を使用してMongoDbからbinDataレコードを取得する方法の例を教えてもらえますか?
私はこのコードを試しましたが、ゴミを返します:

char* arrS;

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

「s」は私のbinDataフィールドです。よろしくお願いします。ご提案をいただければ幸いです。

4

2 に答える 2

0

パラメータiLenは実際には(2番目の)戻り値ですbinData。次のようにバイナリコンテンツを抽出できます。

int iLen;
const char* p = record["s"].binData(len);
std::string content(p, iLen);
于 2012-08-30T22:51:24.167 に答える
-1

.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));
于 2012-07-30T17:59:24.687 に答える