固定大小的字符串型容器

Fixed size string type container

本文关键字:字符串型      更新时间:2023-10-16

我需要一个固定大小的字符串类型的某些要求。现在,我一直在做一个简单的char[20]字符数组来满足这个要求。但是,它缺乏我偶尔需要的某些仍然适合容器的属性。例如,简单的empty(), clear()方法经常需要,length/size属性或getSize()方法也可能返回此属性或不管理'/0'的能力。不是实际大小,而是填充容器的字符串的大小。

现在我知道我可以重新实现所有这些,将来当我有时间的时候,我可能会重新实现这些,但现在有没有其他方法来实现这一点?

我假设您希望保留小字符串,避免在访问它时在堆上分配和间接分配。在这种情况下,看看Boost中的small_vector

typedef boost::container::small_vector<char> small_string;

这是你想要的字符串。

更新:似乎许多标准c++库的实现都使用了std::string的小字符串优化(SSO)。这意味着只要你的字符串足够小(例如在64位体系结构上有22个字符),它就会被就地存储。我强烈建议你使用标准的std::string

由于问题特别要求固定大小的字符串,当前答案(small_vector)是错误的,因为它没有固定大小。

最接近的匹配将是@SamVarshavchik在评论中提到的std::array<char, N>