编程论坛
注册
登录
编程论坛
→
C++教室
c++语法问题
山水之寓
发布于 2013-05-29 21:07, 597 次点击
在c++中用string定义的字符串变量能用strlen测长度吗?
5 回复
#2
约束小朋友
2013-05-29 21:22
可以。。。
#3
lonmaor
2013-05-29 22:13
c++的string类有length()可以返回长度,为什么还要用strlen呢?
#4
justlxy
2013-05-29 22:46
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 编辑
]
#5
好聚好散
2013-05-30 13:03
飘过
#6
子楠
2013-05-30 13:32
同三楼的
1