版权所有 © 2019, 2020 克里斯蒂安·斯塔西奥夫斯基
版权所有 © 2016-2019 文尼·法尔科
根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或访问 https://boost.ac.cn/LICENSE_1_0.txt 副本)
目录
此库提供了一个字符的动态可调整大小的字符串,具有编译时固定的容量和连续的嵌入式存储,字符放置在字符串对象本身内。它的 API 非常类似于 std::string
的 API。
在以下情况下,固定容量字符串非常有用:
constexpr
函数中需要动态可调整大小的字符串。memcpy
进行序列化)。该库可以在两种不同的模式下使用:独立模式和 Boost 依赖模式。此库默认为 Boost 依赖模式;独立模式是通过使用配置宏选择加入的。
在 Boost 依赖模式下,除了标准库之外,该库还需要使用至少 C++11 以及 Boost.Core、Boost.Utility 和 Boost.ContainerHash。在独立模式下,需要 C++17,但除了标准库之外,不需要任何库。
总体设计目标是尽可能地类似于 std::string
的接口和行为。当任何操作将超出字符串的最大允许大小时,如果启用了异常,则会抛出 std::length_error
。所有抛出异常的算法都提供强异常安全保证。这旨在成为 std::string
的直接替代品。
static_string
的 API 仅在少数地方与 std::string
不同,其中之一是添加了 subview
函数,对于该函数,此实现返回字符串视图而不是 static_string
,以及某些永远不会抛出异常的函数被标记为 noexcept
,这与 std::string
的那些函数不同。static_string
的可用重载与 std::string
的重载相同。
迭代器失效规则与 std::string
的规则不同
static_string
会使所有迭代器失效static_string
会使所有迭代器失效根据用于 static_string
专精化的字符类型和大小,某些优化用于减小类类型的大小。给定形式为 basic_static_string<N, CharT, Traits>
的专精化名称
N
为 0,则该类没有非静态数据成员。给定类型为 basic_static_string<0, T, Traits>
的两个对象 a
和类型为 static_string<0, U, Traits>
的对象 b
分别,如果 T
和 U
相同,则 data()
返回的指针值将相同。static_string
大小的成员类型将是可以表示值 N
的最小标准无符号整数类型。某些功能可以通过定义配置宏来启用和禁用。宏和它们控制的相关功能是
BOOST_STATIC_STRING_STANDALONE
:定义后,库将置于独立模式。感谢 Agustín Bergé、Peter Dimov、Glen Fernandes 和 Christian Mazakas 在此库开发过程中提供的持续反馈和指导。
此库的开发由 C++ 联盟 赞助。
定义在命名空间 boost::static_strings
中