我想在leveldb中存儲關鍵值(url)&值(jpg圖片)。據說,爲什麼leveldb DB :: Get API使用std :: string作爲值類型?
鍵和值是任意字節數組。
我該如何使用DB :: Get API?
我想在leveldb中存儲關鍵值(url)&值(jpg圖片)。據說,爲什麼leveldb DB :: Get API使用std :: string作爲值類型?
鍵和值是任意字節數組。
我該如何使用DB :: Get API?
我終於明白了! C++ std :: string使用size()方法獲取數據長度,使用.data()獲取數據值。 C++ std :: string不以'\ 0'結尾,而是由size()函數指定!
或者,如果您使用迭代器,則可以直接從返回切片的iter->Value()
函數中提取數據。這避免了複製到中間字符串中。
Slice並不擁有內存(只是指向它),所以返回一個Slice意味着調用者應該釋放內存。
所以需要一個具有值語義的類型。
二進制數組的自然值將是std::vector<uint8_t>
,因爲它意味着如此。但std::string
也可以用來代替(正如你在答案中指出的那樣),如果你期望讀一個真正的字符串(不需要強制轉換),它會更有用。
主要問題是,原因沒有記錄,但。
其實底層數據_is_保證以''\ 0''結尾;) –