c++中c_str()的用法示例

 更新时间:2020年09月27日 10:41:22   作者:chuyaoxin  
这篇文章主要介绍了c++中c_str()的用法示例,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
//标准库的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指针的话,导致的错误将是不可想象的。就如: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;
}

以上就是c++中c_str()的用法示例的详细内容,更多关于c++ c_str()的资料请关注脚本之家其它相关文章!

相关文章

  • 在QT5中实现求两个输入值的和并输出(实例)

    在QT5中实现求两个输入值的和并输出(实例)

    下面小编就为大家带来一篇在QT5中实现求两个输入值的和并输出(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • C++ 反射机制详解及实例代码

    C++ 反射机制详解及实例代码

    这篇文章主要介绍了C++ 反射机制详解及实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • C语言 90后怀旧游戏超级玛丽的实现流程

    C语言 90后怀旧游戏超级玛丽的实现流程

    90后最风靡的游戏是什么?第一个联想到的肯定是插卡游戏机或者VCD加光盘运行在电视机上的超级玛丽了,它的经典绝对可以排在第一位,长大后的我们今天来用C语言重温一下
    2021-11-11
  • C语言实现计算器的两种方法

    C语言实现计算器的两种方法

    这篇文章主要为大家详细介绍了C语言实现计算器的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C++嵌套类与局部类详细解析

    C++嵌套类与局部类详细解析

    从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定
    2013-09-09
  • 详解C语言结构体中的函数指针

    详解C语言结构体中的函数指针

    这篇文章主要介绍了详解C语言结构体中的函数指针,文中对函数指针的基本概念也有讲解,需要的朋友可以参考下
    2016-04-04
  • 关于C++复制构造函数的实现讲解

    关于C++复制构造函数的实现讲解

    今天小编就为大家分享一篇关于关于C++复制构造函数的实现讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++实现KDTree 附完整代码

    C++实现KDTree 附完整代码

    这篇文章主要介绍了C++实现KDTree的代码详解,包括kdTree概念介绍及分割的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Cocos2d-x学习笔记之CCLayerColor层的使用实例

    Cocos2d-x学习笔记之CCLayerColor层的使用实例

    这篇文章主要介绍了Cocos2d-x学习笔记之CCLayerColor层的使用实例,CCLayerColor是一个颜色布景层类,本文依然使用Hello World作为例子讲解,需要的朋友可以参考下
    2014-09-09
  • 解决C++全局变量只能初始化不能赋值的问题

    解决C++全局变量只能初始化不能赋值的问题

    今天小编就为大家分享一篇解决C++全局变量只能初始化不能赋值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论