我有一个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 *数据成员,该成员可以是任何一种。
任何人都必须面对这个问题吗?