bitset初始化的问题?

hsf1002 2009-05-10 03:59:46
以下是测试程序:

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <bitset>
using std::bitset;


int main( int argc, char ** argv )
{
string str( "1111001110101100" );
bitset<16> bit_vec_0( str, 2 ); // (1)
bitset<16> bit_vec_1( str, str.size() - 9 ); // (2)

cout << "str: " << str << endl;
cout << "bit_vec_0: " << bit_vec_0 << endl;
cout << "bit_vec_1: " << bit_vec_1 << endl;

system( "pause" );
return 0;
}

C++Primer中对于bitset初始化列举了三种方法,注释(2)是其中之一;
问题:
注释(1)不知道是什么含义,我用2,3,4,5,6,7都测试过,也没发现有什么规律来?请教高人!
编译器:Dev-C++
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsting 2009-05-10
  • 打赏
  • 举报
回复
你的注释(1)和(2)用的是同一个构造函数:
bitset<bits>::bitset (const string& str,string::size_type str_idx)

都是用从“参数str的第str_idx个字符开始的那个字符”到“参数str的结束”的所有字符初始化这个bitset。
你用的采样值太少,而且范围也太小,你一直试上去的话,估计到16或者17就有变化了,你就应该有结论了。
我回答的内容是从《C++ 标准程序库》(《The C++ Stardand Library -- A tutorial and Reference》)
的第464页看来的,你至少应该有一本电子版的吧,看看这段内容应该就明白了。
npuhuxl 2009-05-10
  • 打赏
  • 举报
回复
注释一:从str的第2个字符开始存储
adventurelw 2009-05-10
  • 打赏
  • 举报
回复
省略了第三个表示长度的参数,那么就是到结尾结束
bitset <16> bit_vec_0( str, 2 );
表示从str[2]开始,一直到str末尾最后一个字符,当然,其方向是反的。

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧