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");

    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;
}

程序的输出:



  • 16
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值