C++中string类型求长度用法以及c_str用法总结

1.C++中求string类型的长度有三种方式。

在c++中,string代表一个类,有它自己的构造函数和成员函数。

有两个成员函数都可以求string类型的长度。

①  length()成员函数。

②  size()成员函数。

③  可以借助strlen函数,但是前提是需要将string类型的字符串转换为char*类型。

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',
#include
#include
using namespace std;


int main()
{
    string s("aaaaaaaab");

    int length1 = s.length();
    int length2 = s.size();
    int length3 = strlen(s.c_str());
    cout<

输出结果是:

C++中string类型求长度用法以及c_str用法总结_第1张图片

2.c_str()函数用法讲解

函数原型:

const char* c_str() const;

返回值:

c_str()函数返回一个指向C字符串的指针常量,指向的内容是字符串对象的当前内容加上一个额外的终止字符(‘\ 0’)。

因为在c语言中没有string类型,所以必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。

由于c_str()函数返回的是一个临时指针,因此使用时要注意。下面通过两段代码来解释。

#include
#include
using namespace std;

int main()
{
    string s("aaaaaaaab");
    const char* c; 
    c=s.c_str();  //数组c指向字符串s。数组中的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。
    cout<

程序的输出:

C++中string类型求长度用法以及c_str用法总结_第2张图片

可以看到,修改字符串s中的内容之后,再次输出c数组,其中的内容发生了变化。显然,这种做法不是我们想要的。

为了使数组c就是字符串的拷贝,而不是临时指针,可以用字符串的拷贝函数strcpy()来操作。

将string数组中的内容复制出来。

正确使用c_str()函数的用法如下:

#include
#include
using namespace std;


int main()
{
    string s("aaaaaaaab");
    //改进,用字符串拷贝函数
    char* c=new char[20];
    //c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
    strcpy(c,s.c_str());
    cout<

程序的输出:

C++中string类型求长度用法以及c_str用法总结_第3张图片


你可能感兴趣的:(c++)