围绕std :: string和std :: string_view构建包装器类

时间:2019-06-18 23:30:53

标签: c++ c++17 string-view

我有一个C ++应用程序,它具有多年开发的精深逻辑。可悲的是,它结合了各种不同类型的字符串:std :: string,C字符串,Pascal字符串和OS /平台特定的字符串。另外,每种字符串类型通常使用各种编码。

我创建了一个包装类WBString,它包含一个std :: string,并且可以使用将近十多种我现有的字符串进行构造。

但是,我希望底层实现能够使用std :: string_view 。如果我从已经是const的源字符串中进行构造,则在初始化和传递类时,std :: string_view可以保存各种幕后构造。

它看起来好像C ++ 17的std :: string_view可能只是试图更好地与std :: string集成在一起,但我想这可能会破坏现有的应用程序。

我可以看到许多实现此目的的方法:

1)对我的WBString类进行模板化,以便为非const函数保留std :: string,并为const字符串保留单独的WBStringView;

2)创建一个没有数据的基类和两个单独的继承类:WBString / WBStringView;

3)有一个将std :: string和std :: string_view都合并为数据成员的类;

4)保留一个void *数据成员,该成员可以是任何一种。

任何人都必须面对这个问题吗?

0 个答案:

没有答案