最近复制了一个有strlen(str)的代码,想把它替换成str.size(),替换后编译错误,不知道为什么。上网一查,才知道区别这么大。
所用数据类型不同
str.size()用于string类型,而strlen(str)用在char类型的数组上。
string a;
getline(cin,a);
cout<<a.size();
输出a字符串中除空格外所有有效字符的数量,也是字符串长度。如输入“Hello”,输出“5”。输入“gua jia”,输出“6”。
char str0[8]={'a','b','c','d','e','f','i','g'};
char str1[]="abcdefig";
char str2[]="01234/056789" ;
char str3[]="abcse/0fgkij";
printf("strlen(str0)=%d/n",strlen(str0));
printf("strlen(str1)=%d/n",strlen(str1));
printf("strlen(str2)=%d/n",strlen(str2));
printf("strlen(str3)=%d/n",strlen(str3));
输出为:
strlen(str0)=11
strlen(str1)=8
strlen(str2)=9
strlen(str3)=5
示例代码如下:
#include<iostream>
#include<algorithm>
#include<string>//因字符串需要调用string库
using namespace std;
int main(){
string a="hello";
char str0[8]={'a','b','c','d','e','f','i','g'};
char str1[]="abcdefig";
char str2[]="01234/056789" ;
char str3[]="abcse/0fgkij";
cout<<a.size()<<endl;//输出字符串a长度
printf("strlen(str0)=%d/n",strlen(str0));
printf("strlen(str1)=%d/n",strlen(str1));
printf("strlen(str2)=%d/n",strlen(str2));
printf("strlen(str3)=%d/n",strlen(str3));//依次输出每个字符数组长度
return 0;//好习惯
}