新的C ++ Mongo驱动程序:如何查看类型以及如何获取字符串值

时间:2016-03-10 14:59:38

标签: c++ mongodb

我有两个问题,我在教程中找不到答案。

我得到一个文档,然后是doc中的一个元素:

        bsoncxx::document::element e = doc["id"];

        if (!e || e.type() != bsoncxx::type::k_int32) return ERROR;
        int id = e.get_int32();

有没有办法为类型获取字符串值,以便进行调试? 像:

        std::cout << e.type() << std::endl;

(不起作用)

第二个问题是如何将utf8类型值转换为std :: string。 这不起作用:

        e = doc["name"];
        if (!e || e.type() != bsoncxx::type::k_utf8) return ERROR;
        string name = e.get_utf8().value;

任何提示?

2 个答案:

答案 0 :(得分:7)

  1. 打印类型为字符串(LIGNE 67

    #include <bsoncxx/types.hpp>
    
    std::string bsoncxx::to_string(bsoncxx::type rhs);`
    
  2. 元素到std :: string

    stdx::string_view view = e.get_utf8().value;
    string name = view.to_string();
    

答案 1 :(得分:0)

#include <bsoncxx/types.hpp>

std::cout << bsoncxx::to_string(bsoncxx::types::b_utf8::type_id);

结果:&#34; utf8&#34;

这些是bsoncxx的类型

namespace types {
struct b_eod;
struct b_double;
struct b_utf8;
struct b_document;
struct b_array;
struct b_binary;
struct b_undefined;
struct b_oid;
struct b_bool;
struct b_date;
struct b_null;
struct b_regex;
struct b_dbpointer;
struct b_code;
struct b_symbol;
struct b_codewscope;
struct b_int32;
struct b_timestamp;
struct b_int64;
struct b_minkey;
struct b_maxkey;
class value;
}  // namespace types