今天总结一下c/c++字串的类别。
c + + 中,有两种字串 { 从 c 沿袭过来的 c 字串 c + + 的 s t l 资源提供的 s t r i n g 类型的字串 c++中,有两种字串\left\{\begin{matrix} 从c沿袭过来的c字串 \\ c++的stl资源提供的string类型的字串 \end{matrix} \right. c++中,有两种字串{从c沿袭过来的c字串c++的stl资源提供的string类型的字串​

c串

在存储结构中表现为字符序列,故常用字符数组表示c串。

c串以0作为字符序列的结束符。c串空间存储长度为字串长度加一。

c串数组表示

将字串放入字符数组,则多1

char buffer[7]={'h','e','l','l','o','!',0};//必须大于等于7,没有0就构不成字串
char buffer[7]={'h','e','l',0,'l','o','!'};//正确,但字串长度为3
//下面的形式与上面等价
char c1[]={"hello!"};
char c2[]="hello!";
//都是7个字符

除了字符数组,其他类型的数组都不能被输出设备之间用数组名输出。

数组名作为变量也只有字符数组有意义,而且通过输出数组名来输出字串也要依靠字串本身的结束标记。

字符指针

若仅仅用于输出字串,就不需要将字串存入数组,用一个字符指针,指向字串的起始位置,因而直接把字串赋值给字符指针。

char* c="hello";//由下得出c:存储在另辟蹊径的空间中
//初始化的意义就是将指针c指向这块字串空间的起始地址

在c/c++中,如果在字符数组初始化定义中出现字串字面值,就将字面值填入字符数组中。

​ 若字串字面值出现在其他场合,那么字面值就作为只读内存存储在独立的空间中。

指针的类型若是字符常量,则可以抑制指针对其进行修改访问:

const char* c="hello!";

事实上,所有字面值类型都是const的!

字串的输出,用字符数组的数组名也好,用字符指针也好,都是因为他们表示的是字串的起始地址。这些都在说明,数组名与指针肯定有关系

c串操作

字符数组能做到的

char a[10]="hello";
cin>>a;
cout<<a;
cout<<a[0];

字符数组不能做到的

代表字符地址的数组名和真是的字串还是有差别的。

比较大小,地址不能代替字符比较。

数组名牢牢的捆绑着数组所拥有的空间,把数组名看作变量,想要修改它的企图都是对数组空间的重组和破坏:

int a[10],b[10];
a=b;//错误,不能让数组a放弃自身空间而去关联数组b
int c1="hh";
int c2=c1;//错误,字串不能通过数组名赋值的方式从一个地方拷贝到另一个地方
c1="good";//错误,字串的替换操作,设计数组元素存储的重组,根本非法

字串查找操作涉及遍历所有数组元素,数组根本无法承担。

获取字串长度也不行,对于只能进行下标访问的数组显得无能为力,只能表示数组空间大小。

string串

string是一种数据类型,最初属于第三方提供的stl(标准模板库)资源。后来并入c++系统。使用string类型需要string头文件。

使用c库函数(就上面求长度啥的)使用string.h,或者c++头文件cstring。

string为字串类,他产生的string实体就是string串
初始化 { s t r i n g s 1 ( " h e l l o " ; ) / / s t r i n g ( s t r [ , 起始位置,个数 ] s t r i n g s 2 = s 1 ; s t r i n g s 3 = " h e l l o " ; 初始化\left\{ \begin{matrix} string s1("hello";) //string(str[,起始位置,个数]\\ string s2=s1;\\ string s3="hello"; \end{matrix} \right. 初始化⎩ ⎨ ⎧​strings1("hello";)//string(str[,起始位置,个数]strings2=s1;strings3="hello";​
它是容器类……

别的就不说了,网上都有,本文仅供区分。嘿嘿。

c字串和String字串的区别相关推荐

  1. (原創) 如何一個字元一個字元的印出字串? (C/C++) (C)

    Abstract 若只能一個位元一個位元的印出字串,你會怎麼印呢? Introduction 我同學要將字串送到硬體,但硬體所提供的API,一次只能送一個字元,在這裡我們模擬這個情境,一個字元一個字元 ...

  2. JAVA基础(String类统计在大串中查找小串出现的次数)

    1,需求: 统计大串中小串出现的次数 2,代码: package com.xiaoshuai.test;public class Test7 {/*** * A:画图演示* 需求:统计大串中小串出现的 ...

  3. Lua实现二进制串与Hex显示串的相互转换

    2019独角兽企业重金招聘Python工程师标准>>> 之前因为在调试程序的时候,要查看Lua的二进制字串里的内容,所以找了个二进制串转Hex显示串的小函数.昨晚群里有朋友想找从He ...

  4. 手串 如何挑选手串 什么是小叶紫檀?小叶紫檀怎么保养 小叶紫檀怎么盘法

    手串 如何挑选手串  什么是小叶紫檀?小叶紫檀怎么保养 小叶紫檀怎么盘法 在植物学界中公认的紫檀只有一种,"檀香紫檀".俗称"小叶紫檀". 小叶紫檀为红木中精品 ...

  5. c语言字符串筛选字母,【程序设计】  功能:输入一个字符串,过滤此串,只保留串中的字母字 符,并统计新生成串中包含的字母个数...

    [程序设计] 功能:输入一个字符串,过滤此串,只保留串中的字母字 符,并统计新生成串中包含的字母个数0 mlfaxk2013.03.24浏览465次分享举报 求C语言高手解救!!!!!!哪里错了?#i ...

  6. NLP 开源形近字算法之相似字列表(番外篇)

    创作目的 国内对于文本的相似度计算,开源的工具是比较丰富的. 但是对于两个汉字之间的相似度计算,国内基本一片空白.国内的参考的资料少的可怜,国外相关文档也是如此. 本项目旨在抛砖引玉,实现一个基本的相 ...

  7. 大一java实训报告1500字_从800字小作文,到3000字小论文你用了多久? | 校媒FM

    前不久,大四的学长.学姐刚结束被老师们不断"为难"的开题答辩,不少当事人直呼"太难了!". 一个熟悉的学姐是这样在朋友圈吐槽的:"老师提问得也太犀利了 ...

  8. C语言再学习 -- 位、字节、字、字长、字元的关系

    参看:字.字长.字节.位 位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本 的单位. 字节(Byte):一个字节由8个位组成 .它表示作为一个完整处理单位的8个二进制数码.现目前计 ...

  9. 华字后面配什么字比较好_涟字女孩取名字含义 带涟好名推荐

    带川字男孩取名三个字 五行属金宝宝名字 部首:丿 拼音:chuān 笔画:3 五行:金 寓意:传奇.流传.传送.记载,指子承父业.才高八斗.生生不息. 五行属金的宝宝名字 肃川 聚川 释川 钦川 鑫川 ...

最新文章

  1. 如何成为个好Java程序员
  2. python寻路_【Python】 Numpy极简寻路
  3. Microsoft PetShop 3.0 设计与实现 分析报告―――数据访问层
  4. 开发了一款chrome扩展程序
  5. Linux平台下裸设备的绑定:
  6. 每周荐书:高可用架构、解忧程序员、财富自由之路(评论送书)
  7. 文件读入简单操作(C#)
  8. Java ftp 上传文件名乱码
  9. CentOS7 wifi安装配置问题总结
  10. python高级数据筛选的方法_使用python对多个txt文件中的数据进行筛选的方法
  11. 存储组件之MFS详解
  12. 工具(6): 开发神器
  13. 速学计算机,新手电脑配置速成学习
  14. 人为何会生病?(1)
  15. MVC3.0 中Razor 学习 cshtml文件
  16. 写得很好很真实的一篇高考作文居然得了0分
  17. Java反序列化json内存溢出_fastjson反序列化使用不当致使内存泄露
  18. 人生必读的100本书隐私政策
  19. windows 7 64位无法连接到HP5200LX打印机 (错误 0x0000007e)的解决方法
  20. NVisual-丰富的模型库让可视化管理更简单

热门文章

  1. Java语言是编译型语言还是解释型语言?(Java程序执行过程)
  2. LVGL 8.2 菜单
  3. ADF4002【分频器】(康威)
  4. weex android 地图,weex之百度地图组件开发
  5. 目标管理的是与非(转载)
  6. jquery隐藏和显示tr标签
  7. 基于JSP的网上机票销售系统
  8. 学Arduino 需要做哪些准备?(引自知乎用户:郑兴芳,DhP的回答)
  9. PPTP服务端与客户端 修改默认PPTP默认端口1723
  10. 来吧,是时候升级您的领英技术档案了