为何无法使用bitset呢?

tanzu 2007-10-08 09:23:26
出错的代码就一个地方:
std::bitset<48> bsl(std::string(strRead)); //是一个0/1组成的长字符串
if (bsl[1]) ...... //就在这里发生错误, 错误如下:
[C++ Error] fmMain.cpp(82): E2453 Size of the type '_STL::bitset<48>(_STL::string)' is unknown or zero

错误环境是在BCB6.0中, 同样的代码在VC中编译正常通过.
...全文
211 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JoeBlackzqq 2008-05-31
  • 打赏
  • 举报
回复
std::string str="";
std::bitset <48> bsl( str ); //是一个0/1组成的长字符串
if (bsl[1]) {

}
return 0;


//你要看bs1的第几位呀?
当你执行了std::bitset <48> bsl( str ); 后,bs1中的值是(1111000011110000),
通过表达式bool a = bs1.at(4);可以使a=1(最右边的1)
通过表达式bool b = bs1.at(0);可以使b=0(最右边的0)

明白了吗?希望对你有用呀!
KenYuan2016 2007-10-08
  • 打赏
  • 举报
回复
显然头文件找错了。 加上那个namespaces 看看。
tanzu 2007-10-08
  • 打赏
  • 举报
回复
如果将strRead从C string改为std::string类型, 就成了如下样子
std::bitset <48 > bsl(strRead);

会出现错误如下:
[C++ Error] _bitset.h(89): E2021 Array must have at least one element
  • 打赏
  • 举报
回复

#include<string>
#include<bitset>
int main()
{
std::string str="1111000011110000";
std::bitset <48> bsl( str ); //是一个0/1组成的长字符串
if (bsl[1]) {

}
return 0;
}

bcb 5.5正常编译运行
KenYuan2016 2007-10-08
  • 打赏
  • 举报
回复
代码贴出来我看看,说不定string页有问题
KenYuan2016 2007-10-08
  • 打赏
  • 举报
回复
int main( )
{
using namespace std;
bitset<2> b2;
...
}
tanzu 2007-10-08
  • 打赏
  • 举报
回复
我已经加上std::了啊.

namespaces是什么东西啊? 没有用过.


65,187

社区成员

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

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