Copyright © 2019, 2020 Krystian Stasiowski
Copyright © 2016-2019 Vinnie Falco
根据 Boost 软件许可证版本 1.0 发布。(参见随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)
目录
该库提供了一种动态可调整大小的字符串,它具有编译时固定的容量和连续的嵌入式存储,其中的字符直接放置在字符串对象本身中。其 API 非常类似于 std::string
。
固定容量的字符串在以下情况下很有用:
constexpr
函数中需要动态可调整大小的字符串。memcpy
)。该库可以在两种不同的模式下使用:独立模式和依赖 Boost 模式。该库默认使用依赖 Boost 模式;独立模式通过使用配置宏来选择加入。
在依赖 Boost 模式下,除了 Boost.Core、Boost.Utility 和 Boost.ContainerHash 之外,该库还需要使用至少 C++11。在独立模式下,需要 C++17,但除了标准库之外,不需要任何其他库。
首要的设计目标是尽可能地模仿 std::string
的接口和行为。当任何操作超过字符串允许的最大大小时,如果启用了异常,则会抛出 std::length_error
。所有抛出异常的算法都提供强大的异常安全保证。这旨在成为 std::string
的即插即用替代品。
static_string
的 API 在少数几个地方与 std::string
不同,其中之一是添加了 subview
函数,此实现为此函数返回一个 string view 而不是 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>
和 static_string<0, U, Traits>
的对象 a
和 b
,如果 T
和 U
相同,则 data()
返回的指针值将相同。static_string
大小的成员的类型将是能够表示值 N
的最小标准无符号整数类型。可以通过定义配置宏来启用和禁用某些功能。宏及其控制的关联功能是:
BOOST_STATIC_STRING_STANDALONE
:定义时,库将置于独立模式。感谢 Agustín Bergé、Peter Dimov、Glen Fernandes 和 Christian Mazakas 在开发此库期间提供的持续反馈和指导。
此库的开发由 The C++ Alliance 赞助。
定义于命名空间 boost::static_strings
。