c++中cstring和string的区别,什么是c风格字符串

  c++中cstring和string的区别,什么是c风格字符串

  字符串,顾名思义,就是由字符组成的字符串。string的这个功能在standard C、standard C和MFC中的实现是不一样的,C完全兼容C。

  1.标准c语言中的字符串。

  标准C中没有string这种数据类型,C中的string是通过char类型字符数组或者char类型字符指针实现的。例如:

  char name[26]=这是一个C风格的字符串;或者

  char *name=这是一个C风格的字符串;

  类型的字符串以\0作为结束标记,占用的内存为实际子字符长度1。它的初始化和赋值都得一个一个的赋值,修改也没什么区别。粒度太小,不直观。就是程序员把软件的一些高层问题,比如算法,抽象数据类型或者软件架构,分散出来。Char *没有构造函数,只能用指针赋值,是一个极其危险的操作。如果在声明char *的时候没有赋一个初始值,建议先初始化为NULL,避免浮动指针或者指针指向未知地址。否则,犯了错误会让你感觉很好!

  C标准中没有string类型,但是C中有一个string.h头文件,需要注意的是,这个string.h中的string和string.h头文件中的string是不同的,它定义了一些我们经常用来操作字符串的函数,比如复制函数strcpy,连接字符串strcat,比较字符串strcmp。这些函数的操作对象是指向char *的字符串。

  2.标准C中的字符串类

  支持c风格的字符串,引入了字符串类的概念。String是由标准模板类STL定义的字符串,几乎可以由所有字符串构造。

  string类的文件是string,必须和使用命名空间std一样;一起用。头文件字符串与头文件字符串无关. h前者是标准C中的模板库类,后者是标准C中的头文件,包含常见的C字符串处理函数,如strcmp。前者不是后者的升级版。

  要深刻理解string是标准C中的一个类,在标准C中定义如下:char * pt=NULL这无疑是正确的,但是string * pt=NULL在标准C中定义;这种方式不会出现警告和错误,但是运行时会出现异常。这是因为string作为一个类,在定义类的对象时,必须调用它的构造函数。在上面的例子中,指针被赋值为NULL而没有调用它的构造函数,所以很明显会出错。正确的方法是new运算符。C中的new与C中的malloc不同,new不仅分配一块内存,还调用类的构造函数。string *pt=new(这是一个c风格的字符串);或者没有指针字符串;系统自动调用默认构造函数构造一个string类的对象。

  3.MFC中的CString类。

  MFC中的String类是CString,封装了string,增加了一些接口。在功能上完全兼容string类,而一些标准C/C不能直接操作CString类。CString类是Microsoft visual c提供的MFC中的一个类,因此它只能由支持MFC的项目使用。比如linux上的项目不能使用Cstring,只能使用标准C中的string类,另外因为String类在C标准库中,所以封装在std命名空间中。在使用它之前,需要使用命名空间std声明;CString类不在std命名空间中,因为它不是C的标准库,而是微软的包库。貌似用string类的程序更有移植性。Cstring和string提供的接口方法不同,char*的转换也不同。以下转换内容来自csdnblog:3358blog.csdn.net/bitxinhai/article/details/2292014

  4.1 cstring和string之间的转换

  stringstr= ksarea

  CStringcstr(str . c _ str());//或者CString CSTR(str . data());仅在初始化时。

  CSTR=str . c _ str();或者CSTR=str . data();

  str=cstr。get buffer(0);//CString - string

  cstr.format(%s ,str . c _ str());//string- CString

  cstr.format(%s ,str . data());//string- CString

  str=LPCSTR(CSTR);//CString- string

  c _ str()和data()的区别在于,前者返回一个带/0 的字符串,而后者返回一个不带/0 */的字符串

  4.2.CString和int inti=123的转换;

  CStringstr

  str.format(%d ,I);//int- CString其他基本类型转换类似。

  I=atoi(str);//CString- int以及(atof,atol)4.3.char*和CString cstr= ksarea 的转换;

  char * ptemp=CSTR . get buffer(0);

  char * str

  strcpy(str,ptemp);//CString- char*

  CSTR . release buffer(-1);

  char * str= lovesha

  CStringcstr=str//char *-cs string字符串类型不能直接赋给cs string。至于int和float,string和char*之间的转换,可以使用强制转换或者标准库函数。有许多方法可以将CString转换为其他类型,但实际上,它们都达到了相同的目标。在一个方向上,首先将类型转换为char*,因为char*是不同类型之间的桥梁。获取char*类型并将其转换为其他类型非常容易。本文:3358hi.baidu.com/sage _ haokun/blog/item/a 44 b 9733 aa 14d 812 ebc 4 afbc . html,还不错。主要讲Cstring和string的区别。有兴趣的可以看看。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: