为何无法使用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中编译正常通过.
...全文
142 点赞 收藏 7
写回复
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
回复 点赞
珍惜生命远离CPP 2007年10月08日

#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是什么东西啊? 没有用过.


回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告