c++ - 围绕 std::string 和 std::string_view 构建一个包装类
问题描述
我有一个 C++ 应用程序,它具有多年开发的深度、精致的逻辑。遗憾的是,它结合了各种不同类型的字符串:std::string、C 字符串、Pascal 字符串和操作系统/平台特定的字符串。此外,这些字符串类型中的每一种都经常使用各种编码。
我创建了一个包装类 WBString,它包含一个 std::string,并且可以从我预先存在的近十种字符串中构造。
但是,我希望底层实现能够使用 std::string_view。如果我从已经是 const 的源字符串构造,则在初始化和传递我的类时,std::string_view 可以节省所有形式的幕后构造。
看起来好像 C++17 的 std::string_view 可以简单地尝试与 std::string 更好地集成,但我想这可能会破坏现有的应用程序。
我可以看到很多这样做的方法:
1) 将我的 WBString 类模板化以保存一个 std::string 用于非常量函数和一个单独的 WBStringView 用于 const 字符串;
2)创建一个没有数据的基类和两个独立的继承类:WBString / WBStringView;
3) 有一个包含 std::string 和 std::string_view 作为数据成员的类;
4) 保留一个可以是任一类型的 void* 数据成员。
以前有人必须面对这个问题吗?
解决方案
推荐阅读
- javascript - 如果我滚动得太快,滚动链接定位不起作用。有没有更好的方法?
- excel - 如何阻止 Excel VBA 组合框将返回的一条记录拆分为多行?
- java - 编译错误:无法转换 Set
> 设置 >> - android - Firebase 电话身份验证未发送带有代码的短信
- html - 如何将正文定位在 CSS 导航栏对面的中间和徽标的左侧?
- r - 如何在远程机器上使用 GoogleVis R 包?
- excel - 在工作表中选择变量值
- django - Django,按用户全名过滤 Q 对象
- javascript - 未捕获的 ReferenceError:未定义 firebaseui
- algorithm - 生成大列表中元素之间总和的有序列表