【发布时间】:2017-01-03 10:55:45
【问题描述】:
我想要一个固定大小的字符串类。理想情况下,该接口将匹配std::string 之一,唯一的区别是新类从不分配新内存。对于应该避免分配新内存的应用程序,它应该是一个方便的类。大小可以是静态的(在编译时已知)。
我认为有两种方法。第一个是围绕char 数组实现一个类,然后或多或少地实现std::string 具有的所有功能。我还必须实现一些运算符来创建具有给定固定大小字符串等的std::strings。
第二种方法,我什至不确定是否可行,是从std::string and 继承,覆盖所有可能改变字符串大小的函数。我在 Visual Studio 中查看了 basic_string 标头,它似乎不是虚拟的,所以我想这不是要走的路。
您认为实现此类的最佳方法是什么?
【问题讨论】:
-
在 C++17 中使用
std::string_view,您可以非常简单地结合字符数组和字符串视图... -
为什么不直接包装
std::string并且不允许让它增长的操作? -
为什么不应该分配内存?
-
@ruhigbrauner 并覆盖所有可能改变字符串大小的函数 -- 那么你剩下的只是
std::array<char, some_number>,只有几个函数这可能可以使用 STL 算法来实现。 -
实现一个分配器然后使用
std::basic_string<CharT, std::char_traits<CharT>, MyFixedSizeAllocator<CharT>>怎么样?
标签: c++ size fixed stdstring string-length