注册 登录
编程论坛 C++教室

c++语法问题

山水之寓 发布于 2013-05-29 21:07, 597 次点击
在c++中用string定义的字符串变量能用strlen测长度吗?
5 回复
#2
约束小朋友2013-05-29 21:22
可以。。。
#3
lonmaor2013-05-29 22:13
c++的string类有length()可以返回长度,为什么还要用strlen呢?
#4
justlxy2013-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