c++中c_str()的用法详解(转)

摘要:
//标准库的string类提供了三个成员函数,用于从string_str//C_str()获取C类型的字符数组:生成一个constchar*指针,指向以空字符结尾的数组//此数组应为数组#include<字符串类内部;iostream>//字符串#include<需要包含cstring;cstring>使用namespacestd;intma公司
  1. //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
    //主要介绍c_str
    //c_str():生成一个const char*指针,指向以空字符终止的数组。
    //这个数组应该是string类内部的数组
    #include <iostream>
    //需要包含cstring的字符串
    #include <cstring>
    using namespace std;
     
    int main()
    {
        //string-->char*
        //c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同
     
        //这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。
        //因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中
        const char *c;
        string s = "1234";
        c = s.c_str();
        cout<<c<<endl;
        s = "abcde";
        cout<<c<<endl;
    }

    结果是:

    c++中c_str()的用法详解(转)第1张

     上面如果继续用c指针的话,导致的错误将是不可想象的。就如:1234变为abcde

    其实上面的c = s.c_str(); 不是一个好习惯。既然c指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?这就要用到strcpy等函数(推荐)。

    //标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组
    //主要介绍c_str
    //c_str():生成一个const char*指针,指向以空字符终止的数组。
    //这个数组应该是string类内部的数组
    #include <iostream>
    //需要包含cstring的字符串
    #include <cstring>
    using namespace std;
     
    int main()
    {
        //更好的方法是将string数组中的内容复制出来 所以会用到strcpy()这个函数
        char *c = new char[20];
        string s = "1234";
        // c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。
        strcpy(c,s.c_str());
        cout<<c<<endl;
        s = "abcd";
        cout<<c<<endl;
    }

    https://www.cnblogs.com/cyx-b/p/12411673.html

免责声明:文章转载自《c++中c_str()的用法详解(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇利用Func封装“方法重试”功能(二)vue数据处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

mysql之排序查询

高级文章目录3:排序查询功能:1.按单个字段排序案例1:查询员工信息,要求工资从高到低排序2.为排序添加筛选条件案例1:部门编号˃=90的员工信息,按员工编号降序排序案例2:部门编号˃=90的人员信息,按输入时间排序。按表达式排序案例1:按年薪显示员工信息和年薪4按别名排序案例1按年薪升序查询员工信息5.按函数(长度)排序案例1查询员工姓名并按姓名长度减少...

Sql Server:创建用户并指定该用户只能看指定的视图,除此之外的都不让查看

--当前数据库创建角色execsp_Addrole“seeview”--创建了一个数据库角色,--添加了只允许访问指定视图的用户:execsp_Addlogin“login”、“password”、“default database name”execsp_ Addlogin“per”、“oa”不能在此处执行,execsp_Adduser“login nam...

go语言游戏服务端开发(一)——架构

本教程以Go语言为例。特别是游戏服务进程有更新上线时,稳定性还没有被线上并发验证,宕机的几率会增加,数据丢失的风险也会增加。为了减轻风险,可以考虑把数据缓存跟服务进程分离。对于轻中度游戏,游戏的通信量不会很多,没必要每个分服都有一个长连接socket网关。假设一个分服同时连接服务器的客户端有5k,一台机器的socket网关能支持5w个玩家。因此网关需要参与服...

uniapp 实现动态切换全局主题色

要求:要在开发的应用程序中切换主题颜色,如果只需要一种主题颜色,但不需要切换,则可以使用uniappSCSS文件文档思想:预先在公共css中定义所需的主题颜色。这里只是一个定义两种颜色的参考文档的示例,可以从中获得想法。您可以使用css属性选择器动态设置数据xx以动态更改主题颜色。最初,您希望将一个变量直接混合到mixin中,以实现主题颜色的全局控制,忽略了...

最新版Swagger 3升级指南和新功能体验!

因此,本期将为您带来一篇关于Swagger最新版本的文章。本文将向您展示Swagger最新版本的变化?如何将旧版本的Swagger升级到新版本?Swagger是一个用于生成、描述和调用RESTful接口的Web服务。Swagger 2.9.2的使用分为以下四个步骤:添加依赖项、启用Swagger功能、配置Swagger文档摘要信息和调用接口访问。让我们分别来...

Navicat数据存放位置和备份数据库路径设置

navicat数据库存储在哪里?有了这样的问题,让我们来解决这个问题。默认情况下安装Navicat,默认情况下也安装MySQL,数据库存储在默认用户的目录中。选择安装目录时,还可以选择数据的位置。很多人此时只是设置了MySQL的安装位置。...