C++中string类型求长度⽤法以及c_str⽤法总结1.C++中求string类型的长度有三种⽅式。
在c++中,string代表⼀个类,有它⾃⼰的构造函数和成员函数。
有两个成员函数都可以求string类型的长度。
①  length()成员函数。
②  size()成员函数。
③  可以借助strlen函数,但是前提是需要将string类型的字符串转换为char*类型。
strlen(char*)函数求的是字符串的实际长度,它求得⽅法是从开始到遇到第⼀个'\0',
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s("aaaaaaaab");
c++中string的用法int length1 = s.length();
int length2 = s.size();
int length3 = strlen(s.c_str());
cout<<length1<<' '<<length2<<' '<<length3<<endl;
return 0;
}
输出结果是:
2.c_str()函数⽤法讲解
函数原型:
const char* c_str() const;
返回值:
c_str()函数返回⼀个指向C字符串的指针常量,指向的内容是字符串对象的当前内容加上⼀个额外的终⽌字符(‘\ 0’)。
因为在c语⾔中没有string类型,所以必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
由于c_str()函数返回的是⼀个临时指针,因此使⽤时要注意。下⾯通过两段代码来解释。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s("aaaaaaaab");
const char* c;
c=s.c_str();  //数组c指向字符串s。数组中的数据是临时的,当有⼀个改变这些数据的成员函数被调⽤后,其中的数据就会失效。    cout<<c<<endl;
s="abcdefgk"; //修改字符串s中的内容时,c指向的字符串发⽣了变化,因⽽c也发⽣了变化。
cout<<c<<endl;
return 0;
}
程序的输出:
可以看到,修改字符串s中的内容之后,再次输出c数组,其中的内容发⽣了变化。显然,这种做法不是我们想要的。为了使数组c就是字符串的拷贝,⽽不是临时指针,可以⽤字符串的拷贝函数strcpy()来操作。
将string数组中的内容复制出来。
正确使⽤c_str()函数的⽤法如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s("aaaaaaaab");
//改进,⽤字符串拷贝函数
char* c=new char[20];
//c_str()返回⼀个客户程序可读不可改的指向字符数组的指针,不需要⼿动释放或删除这个指针。
strcpy(c,s.c_str());
cout<<c<<endl;
s="abcdefgk";
cout<<c<<endl;
return 0;
}
程序的输出:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。