我正在用C ++ 17编写一个漂亮的打印组合器库,它涉及将文档表示为树结构,并在叶子中提供客户端提供的字符串。我的图书馆的客户应该提供哪些类型的字符串类型?现在我有这样模仿:
template<
class CharT,
class Traits = std::char_traits<CharT>,
class Allocator = std::allocator<CharT>
>
class basic_document
{
public:
using text_type = std::basic_string<CharT, Traits, Allocator>;
using text_view_type = std::basic_string_view<CharT, Traits>;
…
};
因此,此代码适用于std::string
,std::wstring
或std::basic_string<CharT>
的任何其他实例。但我想知道这是不是太多或太少的灵活性,因为我不知道人们使用什么类型的字符串,或转换有多困难。将它修复为UTF-8 std::string
是否合理,或者相反,我是否应该以某种方式支持非std
字符串类?