我需要一个固定大小的字符串类型来满足某些要求。现在我一直在做一个简单的char[20]
字符数组来满足这个要求。但是,它缺乏某些我需要的容器友好属性。例如,需要非常频繁的empty()
,clear()
方法以及可能返回此属性或能力的length
/ size
属性或getSize()
方法不管理' / 0'。不是实际尺寸,而是填充容器的字符串大小。
现在我知道我可以重新实现所有这些,将来我可能会有一些时间,但是现在有另一种方法来实现这个目标吗?
答案 0 :(得分:1)
我假设您希望将小字符串保留在原位,避免在访问它时在堆和间接上进行分配。在这种情况下,请查看Boost中的small_vector
。
typedef boost::container::small_vector<char> small_string;
这可以作为你想要的字符串。
更新:似乎标准C ++库的许多实现都使用std::string
的小字符串优化(SSO)。这意味着只要您的字符串足够小(例如64位架构上的22个字符),它就会存储在原位。我强烈建议您使用标准std::string
。
答案 1 :(得分:1)
由于问题专门要求使用固定大小的字符串,因此当前答案(small_vector
)不正确,因为它没有固定大小。
如@SamVarshavchik在评论中提到的,最接近的匹配是std::array<char, N>
。