| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1087 人关注过本帖
标题:求指教,求鞭笞,关于string::size_type;
取消只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求指教,求鞭笞,关于string::size_type;
int main(){
    string st("abcdefghijklmn");
      if(st.size()==0)
       .......
}
这是我在书上看到的一段,我很疑惑size()成员函数的返回值是string::size_type,这个应该是类类型,怎么和int的0进行比较呢。
求指教啊。。。。。
2013-01-14 10:34
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
[attach]68046[/attach][attach]68047[/attach]
图片附件: 游客没有浏览图片的权限,请 登录注册

string是库类型啊,书上明确说了size()返回的是size_type怎么还和0进行比较

[ 本帖最后由 yaobao 于 2013-1-14 10:57 编辑 ]

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 10:53
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 10:57
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
以下是引用wp231957在2013-1-14 11:11:32的发言:

看源码吧
光从字面看不出啥来着 比如:#include "afx.h"
typedef unsigned int wp231957;
int _tmain(int argc, _TCHAR* argv[])
{
    wp231957 test;
    test=123456;
    printf("%d",test);
    return 0;
}
万版,没明白你的意思啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 11:20
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
在,在网上又找了半天,也没明白啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 12:50
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
以下是引用TonyDeng在2013-1-14 12:57:12的发言:

string::size_type确实是类类型,但它与unsigned int兼容,可以比较。
困扰我3个小时的问题竟然是因为兼容问题,苦啊!!
可是T版,这个兼容是谁兼容谁啊,是string::size_type兼容unsigned int  还是unsigned int 兼容string::size_type,或者是相互兼容;再有就是这个兼容是因为string::size_type是unsigned int的define还是别的原因啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 13:05
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
以下是引用TonyDeng在2013-1-14 13:16:28的发言:

size_type是在类中定义的类型,可以视为define,但其实没那么简单,不过可以简单地这样看。之所以要在类中定义,是因为这个东西需要随着类的实际情况变化而变化,这个计数器可能是极小的数,也可能是极大的数,简单地一个unsigned int可能容纳不下,所以它会随着定义的类的可能性而变化,不过不管它是unsigned int还是unsigned long甚至更大,都必然与unsigned类整数兼容,与零比较是没有问题。
我这样理解不知道对不对:之所以if(s.size()==0)这样的操作正确是因为无符号数字0的特殊位模式造成的,因为不管是考虑大小端还是字节数,无符号的0都是所有位上都是0,所以可以不考虑s.size()的返回值size_type到底是unsigned in 还是unsigned long 或是其他别的什么类型而直接比较,如果将0换成别的数是不可以的
说来惭愧,C++刚学,想自己写段代码来验证这样理解对不对都很难办到,即使有了结果自己也不敢相信是对的。
求指教

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 13:31
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
unsigned  int i;
string st("abcderty");


i=st.size();
//第一种,赋值
i=5;
if(i>st.size())
\\第二种,比较
i+=st.size();
//第三种,运算
那上面这三种都是错误的喽

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 13:48
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
明白了,谢谢T版,谢谢兄弟们。
我也想试啊,可以我现在C++的水平来说,即使测出来个结果我自己也不敢相信啊,测错的几率绝对大于对的

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-14 14:04
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我和这些字母不熟啊,虽然经常见面但也只是点头之交..........

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-15 08:06
快速回复:求指教,求鞭笞,关于string::size_type;
数据加载中...
 
   



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

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