不能仅通过“语法糖”来创建围绕std::string的包装器
创始人
2024-12-27 05:00:34
0

解决方案是将std::string的所有操作都显式地公开给新包装器,并将它们重定向到std::string的对应操作,示例代码如下:

class MyString {
public:
    // construct from const char*
    MyString(const char* str) : str_(str) {}

    // copy constructor
    MyString(const MyString& other) : str_(other.str_) {}

    // move constructor
    MyString(MyString&& other) noexcept : str_(std::move(other.str_)) {}

    // copy assignment
    MyString& operator=(const MyString& other) {
        str_ = other.str_;
        return *this;
    }

    // move assignment
    MyString& operator=(MyString&& other) noexcept {
        str_ = std::move(other.str_);
        return *this;
    }

    // conversion to std::string
    operator const std::string&() const noexcept {
        return str_;
    }

    // length() operation
    size_t length() const noexcept {
        return str_.length();
    }

    // find() operation
    size_t find(const MyString& substr, size_t pos = 0) const noexcept {
        return str_.find(substr.str_, pos);
    }

    // substr() operation
    MyString substr(size_t pos = 0, size_t len = std::string::npos) const {
        return MyString(str_.substr(pos, len).c_str());
    }

    // insert() operation
    MyString& insert(size_t pos, const MyString& str) {
        str_.insert(pos, str.str_);
        return *this;
    }

    // erase() operation
    MyString& erase(size_t pos, size_t len = std::string::npos) {
        str_.erase(pos, len);
        return *this;
    }

    // append() operation
    MyString& operator+=(const MyString& str) {
        str_.append(str.str_);
        return *this;
    }

private:
    std::string str_;
};

相关内容

热门资讯

八分钟了解!兴动麻将胡牌器,3... 八分钟了解!兴动麻将胡牌器,369麻将有挂吗,wpk教程(有挂详情);1、每一步都需要思考,不同水平...
6分钟了解!吉祥麻将棋牌有挂吗... 6分钟了解!吉祥麻将棋牌有挂吗,乐乐游戏辅助器,2025新版总结(有挂黑科技)1、6分钟了解!吉祥麻...
四分钟了解!广东闲来麻将app... 四分钟了解!广东闲来麻将app有挂吗,天天福建十三水稳赢,可靠技巧(有挂实操)1)广东闲来麻将app...
7分钟了解!老胡麻将有没有挂,... 7分钟了解!老胡麻将有没有挂,哈灵麻将系统设置猫腻,教你教程(有挂揭秘)1、该软件可以轻松地帮助玩家...
3分钟了解!天天爱掼蛋辅助软件... 3分钟了解!天天爱掼蛋辅助软件,微信小程序哥哥跑得快攻略,大神讲解(有挂介绍);微信小程序哥哥跑得快...
七分钟了解!开心联盟牛牛怎样胜... 七分钟了解!开心联盟牛牛怎样胜率高,心悦踢坑游戏,切实教程(有挂揭秘)1、下载好开心联盟牛牛怎样胜率...
1分钟了解!闲来手机麻将怎么提... 1分钟了解!闲来手机麻将怎么提升胜率,推大石有外挂么,安装教程(有挂方法);1、金币登录送、破产送、...
1分钟了解!心悦麻将亲友圈有挂... 1分钟了解!心悦麻将亲友圈有挂吗,快玩炸翻天有挂吗,技巧教程(有挂ai代打);1、全新机制【心悦麻将...
七分钟了解!17麻将十三水怎么... 七分钟了解!17麻将十三水怎么调胜率,快玩炸翻天的辅助软件,第三方教程(有挂透明);1、17麻将十三...
二分钟了解!财神十三张如何提高... 二分钟了解!财神十三张如何提高胜率,碧海麻将是不是有挂的,微扑克教程(有挂透视)1、游戏颠覆性的策略...