函数声明

C++ string 成员函数 length() 等同于 size(),但是和 C 库函数 strlen() 有着本质区别,使用时切勿混淆。首先看一下三个函数的申明:
string::length和string::size

再来看看cstring里面的strlen,返回的是C风格的字符串长度。

它们之间的区别根本就在于strlen()遇到字符’\0’就停止,而string成员函数length() size()会过滤掉空字符,输出不会被截断。
如下例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
#include<cstring>
using namespace std;
char b[30]={0};
int main(){
b[0] = 5; b[1] = 5; b[3] = 5;
string a(b,30);

// strcpy(b,a.c_str());
cout<<"a.length()="<<a.length()<<endl;
cout<<"a.size()="<<a.size()<<endl;
cout<<"strlen(b)="<<strlen(b)<<endl;
return 0;
}

运行的结果是: