zoukankan      html  css  js  c++  java
  • C++11新特性之operator "" xxx(const char *, size_t n)

    从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如:

    class Person
    {
    public:
        Person(const std::string& name): _name(name){}
        std::string name() const {
            return _name;
        }
    private:
        std::string name;
    }
    
    inline Person operator "" _psn (const char *name, size_t n)
    {
        return Person(std::string(name, n));
    }
    
    int main()
    {
        auto person = "Xiao Ming"_psn;
        std::cout<< "The person' name is " << person.name() << std::endl;
        return 0;
    }

    编译执行结果:

    The person' name is Xiao Ming

    如上述例子所示, 其中的_psn部分为开发者自定义的部分,如nlohmann/json就使用了这个新特性,使用

    auto j = "{"name":"Xiao Ming"}"_json;
    std::cout << j["name"] << std::endl;

    即可由常量字符串”{”name”:”Xiao Ming”}” 构造出一个包含key为name, value为”Xiao Ming”的json对象

  • 相关阅读:
    Java String 乱码
    HBase非原理性浅析
    git cherry-pick
    数据结构之队列
    数据结构之栈
    算法之简单排序
    数据结构之数组
    数据结构简介
    Java类型信息
    基数排序
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/11970291.html
Copyright © 2011-2022 走看看