| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2220 人关注过本帖
标题:string + bitset 的问题
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
结帖率:66.67%
收藏
 问题点数:0 回复次数:13 
string + bitset 的问题
书上说``从string对象读如位集的顺序是从右向左``

书后也有一道题: string bstr ;
              cin >> bstr ;
              bitset<8> bv( bstr ) ;

解释bitset对象包含的位模式.

我理解的是: 从 读入的 bstr 的 右边 向 左 数8位(0-7)``` 赋给  bv  的最8位(0-7)`

然后我写了下面的程序:

#include <iostream>
#include <bitset>
#include <string>

using std :: cout ;
using std :: cin  ;
using std :: endl ;
using std :: bitset ;
using std :: string ;

int main(void)
{
    cout << "\nEnter the bit string :" << endl ;
   
    string bstr ;
    cin  >> bstr ;
   
    bitset<8> bv(bstr) ;
   
    cout << "\nbstr:" << bstr << endl
         << "bitset<8> bv(bstr):  " << bv << endl ;
 
    return 0 ;
}

结果发现并不是那样的``而反的``是从读入的 bstr 的 左边 向 右 数8位(0-7)``` 赋给  bv  的最8位(7-0)```

1.jpg (11.4 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: string bitset 
2008-01-06 21:16
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
这是怎么会事啊``我的程序有错吗?

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-01-06 21:17
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
我理解的是: 从 读入的 bstr 的 右边 向 左 数8位(0-7)``` 赋给  bv  的最8位(0-7)`
这样理解不对吧。
从 读入的 bstr 的 右边 向 左 数8位(7-0)``` 赋给  bv  的低阶位(0-7)`

[[italic] 本帖最后由 随心 于 2008-1-6 21:40 编辑 [/italic]]

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-01-06 21:37
新男孩
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-15
收藏
得分:0 
你应该看的是C++ Primer 第四版吧,在“用string对象初始化bitset对象”下不是有个注解嘛,那个可以很好的帮你理解这个问题。例如:
string strval("1100");
bitset<8> bitvec(strval);
cout << bitvec << endl;
结果应该是00001100
因为string strval("1100");相当于strval[4] = {1, 1, 0, 0};当用strval初始化bitvec时,用strval下标最小的初始化bitvec下标最大的,即:strval[0] -- strval[3]初始化bitvec[3] -- bitvec[0].这样你的程序运行所得的结果就可以正确解释了。
2008-01-06 21:59
新男孩
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-15
收藏
得分:0 
对上帖再作个补充:以后当用string 初始化 bitset 时,直接可以从字面上可以看出来,就是将string值的字面值直接搬到bitset的字面值就可以了。
2008-01-06 22:02
新男孩
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
hehe!
2008-01-06 22:07
新男孩
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-15
收藏
得分:0 
hehe

1b712b5ae876bb5b53c955e4eef1a640_big.jpg (95.76 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-01-06 22:09
xyxyxyxy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-28
收藏
得分:0 
2008-01-07 12:19
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
LZ学习神速啊!!!

樱花大战,  有爱.
2008-01-07 13:40
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
原帖由 [bold][underline]新男孩[/underline][/bold] 于 2008-1-6 21:59 发表 [url=http://bbs.][/url]
你应该看的是C++ Primer 第四版吧,在“用string对象初始化bitset对象”下不是有个注解嘛,那个可以很好的帮你理解这个问题。例如:
string strval("1100");
bitset bitvec(strval);
cout  ...



你说的这个我知道```但是解决不了我提的问题``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-01-07 13:58
快速回复:string + bitset 的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019128 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved