| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:c++语法问题
只看楼主 加入收藏
山水之寓
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-28
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:5 
c++语法问题
在c++中用string定义的字符串变量能用strlen测长度吗?
2013-05-29 21:07
约束小朋友
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2013-5-28
收藏
得分:0 
可以。。。
2013-05-29 21:22
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:2 
c++的string类有length()可以返回长度,为什么还要用strlen呢?

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-05-29 22:13
justlxy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:158
注 册:2013-5-14
收藏
得分:3 
strlen的原型是:
size_t strlen(const char*);
从中可以看出,strlen只接受const char*或char*的参数(或const char[]/char[]类型的能退化为对应指针的数组)。而对于元素类型为wchar_t的C风格宽字符串,则需要使用标准库函数wcslen代替strlen。
在C++中,以std::string为代表的字符串是class类型,它们的实例不能作为strlen的参数。要用strlen计算string的串长,可以用string的成员函数c_str()得到字符串指针后再调用(c_str()和data()类似,但是前者保证返回的内部存储的字符串指针后若干字节存在结束符,所以这里应该用前者)。但更推荐等价的方法,使用成员函数length()或size()(两者完全等价),可以利用string的内部实现保留的长度直接返回,而无需strlen从头开始对有效字符计数,相对而言效率高于strlen(字符串越长体现得越明显)。

程序举例如下:
程序代码:
# include <iostream>
# include <string>
using namespace std;
int main()
{
    string a="dshifh";
    string b="djkhjdmds";
    cout<<a.length()<<endl;
    cout<<b.length()<<endl;
    cout<<a.size()<<endl;
    cout<<b.size()<<endl;
    return 0;
}



[ 本帖最后由 justlxy 于 2013-5-29 22:51 编辑 ]
2013-05-29 22:46
好聚好散
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:138
专家分:123
注 册:2012-12-4
收藏
得分:0 
飘过

无节操,无真相
2013-05-30 13:03
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
同三楼的
2013-05-30 13:32
快速回复:c++语法问题
数据加载中...
 
   



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

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