关于 std::bitset 构造函数的几个问题?
Several questions about constructors of std::bitset?
来自 cpp首选项
#3
template< class CharT, class Traits, class Alloc >
explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str,
typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0,
typename std::basic_string<CharT,Traits,Alloc>::size_type n =
std::basic_string<CharT,Traits,Alloc>::npos); (until C++11)
template< class CharT, class Traits, class Alloc >
explicit bitset( const std::basic_string<CharT,Traits,Alloc>& str,
typename std::basic_string<CharT,Traits,Alloc>::size_type pos = 0,
typename std::basic_string<CharT,Traits,Alloc>::size_type n =
std::basic_string<CharT,Traits,Alloc>::npos,
CharT zero = CharT('0'),
CharT one = CharT('1')); (since C++11)
template< class CharT >
#4
explicit bitset( const CharT* str,
typename std::basic_string<CharT>::size_type n =
std::basic_string<CharT>::npos,
CharT zero = CharT('0'),
CharT one = CharT('1')); (since C++11)
我有几个问题:
对于
#3
和#4
,为什么标准指定std::basic_string<...>
而不仅仅是std::string
?我知道std::string
也被称为std::basic_string<char>
和其他字符类型,如wchar_t
,char16_t
可以应用于std::basic_string<...>
。但我认为没有必要,因为bitset
包含0
和1
,顾名思义。老实说,我对
string
类不是很熟悉:为什么要添加#4
?const CharT*
能做什么,这是std::basic_string<CharT,Traits,Alloc>
无法实现的?
#3 对于使用宽字符的人来说很方便 - 你不能指望人们将宽"0"和"1"的字符串转换为窄字符串以使用基于字符串的构造函数,因为你碰巧知道值总是二进制的 - 否则这个构造函数应该替换为 1 位宽的字符串变体。 换句话说,它写得更方便,那么消除这种便利有什么好处呢?
#4 适用于具有字符串文字或指针到字符数组的人,这样他们就不需要构造无用的临时 std::string。
相关文章:
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 关于 std::bitset 构造函数的几个问题?
- 分发我自己的程序的几个问题
- 关于Qt的几个问题
- 关于SDL_Window和unique_ptr的几个问题
- 关于C++内联函数的几个问题
- 我正在尝试[C++]练习多态性和OOD原则。需要指导和几个问题的答案
- 关于C++中数组的几个问题
- 我是C++新手,我有几个问题想问
- C++ - 关于引发异常的几个问题
- 选择-几个问题
- 在Windows上编译和运行示例c++程序的几个问题
- ReadFileEx,可变长度-几个问题
- c++中虚方法表的几个问题
- 关于评价顺序和比较的几个问题
- 关于类成员指针的几个问题
- 模板类——几个问题
- Qt(C++)的几个问题
- QtCreator的几个问题
- 关于声明语义的几个问题