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 编辑 ]