C/C++之string和char的使用及区别

发布时间:2026/10/18 5:14:32
C/C++之string和char的使用及区别 一、概念Char在C中char是定义一个字符存储的是一个字符占一个字节,如’a’C中char是字符类型是一种基本数据类型Stringstring是一个模板类实例化的是对象它的内部是封装了const char*类型是一个常量指针指向可以改变但是指向的值不能改变。字符串字符串是使用’\0’终止的一维字符数组字符串的长度为字符个数加1’\0’也占一个长度。在C中字符串有两种一种是字符串char[]即C风格的字符串一种是封装好的字符串类String。二、操作函数strcpy(s1,s2) 复制字符串s2到s1s2复制到了最前面strcat(s1,s2) 连接字符串s2到字符串s1的末尾strlen(s1) 返回字符串s1的长度strcmp(s1,s2) 比较字符串的大小若s1s2返回0若s1 s2 返回正数若s1 s2返回负数strchr(s1,ch) 返回一个指针指向s1中字符ch第一次出现的位置strstr(s1,s2) 返回一个指针指向s1中字符串s2第一次出现的位置三、例子1、字符串定义例子12chargreet[] hello;//这两行语句等价chargreet[6] {h,e,l,l,o,\0};2、定义string及一些基本操作123456string s1 hello;string s2 world;string s3;s3 s1;//复制s3 s1 s2;//连接两个字符串intlen s3.size();//获取字符串的长度3、string中的每一个字符使用单引号是char类型1234567string s hell0;charch s[0];//hcharchabc;coutch;//打印c//只打印一个c为什么只打印一个c//abc是一个字符串赋值给一个字符时会取字符串中最低的位数赋值。4、字符串输出12345string a;printf(%s,a);//输出乱码对于string这类,要用一下加.c_str()的方式这个函数是返回字符串string的首地址因为%s要的是char*,但是string只是字符串要通过函数名来返回其首地址。string a;printf(%s,a.c_str());四、Char和string异同在c中C风格的字符串和String类的比较可以看下面这张图char是一个字符型指针可以指向一个字符数组与string不太相同的是字符数组存储的字符串必须以’\0’结尾代表结束符号而string并不一定以’\0’结束。string的内存管理是由系统处理的除非内存池用完否则基本上不会出现什么内存问题。而char的内存需要自己手动管理了很容易出现内存问题。五、char*和string的互相转化如果要将string直接转换为const char*类型可以使用两个函数。1、c_str()12string sabcd;constchar*chs.c_str();c_str()函数返回一个指向正规C字符串的指针内容与string相同因为C本身没有string类。但是上面这种用法很不安全因为ch最后指向的内容是垃圾值s对象被析构了。而且c_str()返回的是一个临时指针不能对其进行操作。2、strcpy()通过strcpy函数来进行转换是安全的123charch[20];string sabcd;strcpy(ch,s.c_str());3、data()12string sabcd;constchar*chs.data();那c_str()和data()有什么区别呢c_str()会在数据的末尾添加’\0’结束符多数用于使用字符串场合。而data()函数不会添加’\0’结束符。4、如果要转换为char而非const char类型12345string sabcd;char*ch;ch(char*)malloc((s.length())*sizeof(char));s.copy(ch,s.length(),0);//把当前串中以0开始的s.length()个字符拷贝到以ch为起始位置的字符数组中返回实际拷贝的数目coutch;5、通过str[i]的方式取值的类型123string s abcd;cout typeid(s[1]).name() endl;//char我测试输出 c.六、总结以上为个人经验希望能给大家一个参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询