一 .char类型字符串以空字符结尾

  1.以空字符结尾,空字符被写作\0,其ASCII码为0,用来标记字符串的结尾。

  char dog[4]={'a','b','c','d'}   //不是一个字符串

  char cat[4]={'a','b','c','\0'} //是一个字符串

  这两个都是char数组,空字符对c-风格字符串很重要。C++有很多处理字符串的函数,其中包括cout这些函数。他们都是逐个地处理字符串中的字符,直到遇到空字符为止。

  2.只需使用一个引号括起来的字符串即可,这种字符串称为“字符串常量”或者"字符串字面值"

  char bird[11]="Mr.Cheeps";

  char fish[]="Bubbles";

  3.字符串常量(使用双引号)不能 与字符常量(使用单引号)互换。

  字符常量:'S'是字符串编码的简写,在ASCII系统上,表示为83. 即将83赋值给k.   char k='S';

  字符串常量:“S”,表示两个字符(字符S和\0)组成的字符串。但“S”实际上表示的字符串所在的内存地址。如将内存地址赋值给k。char k="S";

二.字符串的拼接/输入

  注:拼接时不会在被连接的字符串直接添加空格,第二个字符串的第一个字符,将第一个字符串的最后一个字符即(\0)取代。

  1.计算数组长度

  sizeof运算符指的是返回数组在内存中占用的字节数,用来计算类型或变量内存的大小(打印char类型数组里面括号的数值,注意有些时候需要计算\0符号),

   char arr[] = {'a','b','c','\0'}; sizeof(arr)===4

char arr2[] = {'a','b','c'};//这种写法不好,要记得加上字符串结束符'\0'。  sizeof(arr2)===3

char arr3[20] = {'a','b','c','d','e','\0'};//sizeof(arr3)===20

char arr4[] = "ab";//这里会自动在字符串尾部加上字符串结束符'\0',故数组arr4的长度为3. sizeof(arr4)===3

   sizeof可以用类型、函数做参数,strlen只能用char* 做参数,而且必须以'\0'结尾的。

  strlen()函数和size()函数返回字符串中真实有意义的字符的长度,结束符只是用于标记该字符串的结束,并无实际意义,所以不算在长度里面。strlen()与size()函数功能相似,但是句法不同。a不是被用作函数参数,而是位于函数名之前,他们之间用句点连接,如何string a ;int k=a.size(),这种句法表明,a是一个对象,而size()是一个类方法。方法是一个函数,只能通过其所属类的对象进行调用。这里a是string对象,而size()是string类的一个方法。【sizeof()是这个运算符,size()是string类里面的函数】

  sizeof()对数组应用,得到的是数组的长度,而对真正应用,得到的是指针的长度,即使指针指向的是一个数组。

  2.字符串输入

  使用函数cin从键盘输入,cin使用空白(空格,制表符和换行符)来确定字符串的结束位置,意味着cin在获取字符数组时只读取一个单词,读取该单词之后,cin将该单词放到数组中,并自动添加一个\0符,如输入的整个字符串是"New York”,则只将New读入到数组中,因为有空格,而将York留在输入队列中.所以需要提供一个能够读取一行的函数(istream中的类提供了面向行的类成员函数)-->getline()和get()。这两个函数都是读取一行的输入,直到遇到换行符。然而,getline()是丢弃换行符,而get()将换行符保留在输入序列中

  (a).  getline()读取整行,它使用通过回车键输入的换行符来确定输入结尾。两个参数,第一个是输入行的数组的名称,第二个是读取的字符数。如果参数为20,则函数最多读取,19个字符,剩余的空间用于存储自动在结尾处添加的空字符。getline()函数在读取指定数目的字符串或遇到换行符时停止读取。如cin.getline(name,20);

  (b).get()函数 ,,与getline()类似,它们接受的参数相同,解释参数的方式也相同,并且都读取到行尾。但get()并不再读取并丢弃换行符,而是将其留在输入队列中。

  假设连续两次调用get()函数,由于第一次调用后,换行符停留在输入队列中,因此第二次调用时看到的第一个字符便是换行符。因此get()认为已达到行尾,而没有发现任何可读的内容。这时候可以借助get()来把换行符读取掉。

  eg.  cin.get(name,10);

    cin.get(school,10);//并不会输入,因为读取的是空字符串,

  eged:

    cin.get(name,10);

    cin.get()

    cin.get(school,10);//因为上面一句,已经把\0读取掉了。

  (c).两则用处,get()使输入更仔细,假设用get()将一行读入数组中。如何知道停止读取的原因是由于已经读取了整行,而不是由于数组已填满呢?查看下一个字符,如果是换行符,说明已经读取了整行:否则,说明该行中还有其他输入。

  3.字符串的拼接:头文件include <cstring>

  strcpy(A,B)将字符串复制到字符数组中。将B复制给A

  strcat()将字符串附加到字符数组末尾。将A后面加上B

  

    

C++字符串拼接和输入的更多相关文章

  1. Python学习-用户输入和字符串拼接

      用户输入和字符串拼接 #用户输入和字符串拼接username=input("username:")age=int(input("Age:")) #转换整数型 ...

  2. python学习:注释、获取用户输入、字符串拼接、运算符、表达式

    注释 #为单行注释'''三个单引号(或者"""三个双引号)为多行注释,例如'''被注释的内容''' '''三个单引号还可以起到多行打印的功能. #ctrl+? 选中的多行 ...

  3. python学习(3)关于交互输入及字符串拼接

    input是输入语句,用于人机交互. input() 函数接受一个标准输入数据,返回为 string 类型.如果需要输入的未数字,则需要额外定义. sex=input(“Sex:”) #这里会默认为S ...

  4. vs2015发现一个字符串拼接 bug

    VS2015支持 字符串拼接 如下: string user="test"; int password=123; string sql=$" user={user};pa ...

  5. Python 基础 字符串拼接 + if while for循环

    注释单行注释 #多行注释 ''' 三个单引号或者三个双引号 """ ''' 用三引号引住可以多行赋值 用户交互 input 字符串拼接 +  ""%( ...

  6. eclipse处理长字符串拼接快捷方法类

    情景: 你在后台写sql文访问数据库时是不是要这样写 String sql="select a," +"b," +"c " +"f ...

  7. Js 字符串拼接的两种方法

    字符串拼接的两种方法 用数组的方法的好处是:避免变量重新定义.赋值 <!DOCTYPE html> <html lang="en"> <head> ...

  8. python入门6 字符串拼接、格式化输出

    字符串拼接方式    1  使用 + 拼接字符串 2 格式化输出:%s字符串 %d整数 %f浮点数 %%输出% %X-16进制 %r-原始字符串 3 str.format() 代码如下: #codin ...

  9. java数组、字符串拼接

    1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i <arr ...

随机推荐

  1. 过滤xss攻击脚本

    <?php /** * @blog http://www.phpddt.com * @param $string * @param $low 安全别级低 */ function clean_xs ...

  2. 身份认证系统(三)什么是OAuth2

    本文准备用最简单的语言告诉大家什么是OAuth2 ,OAuth2是干什么的. 我们有一个资源服务器,资源服务器中有一系列的用户数据. 现在有一个应用想想要获取我们的用户数据. 那么最简单的方法就是我们 ...

  3. BufPay.com 个人收款接口 接入步骤

    作为独立开发者产品需要收款是非常麻烦的,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好. 看到 「BufPay.com 个人收款」 这个收款工具,挺有意思的.原理是监 ...

  4. ExcludeClipRect区域裁剪问题

    CPaintDC dc(this); CRect rt1; CPen newPen; newPen.CreatePen(PS_SOLID,1,RGB(0,0,0)); CPen *pOldPen = ...

  5. SpringBoot整合Mybatis,TypeAliases配置失败的问题

    SpringBoot整合Mybatis,TypeAliases配置失败的问题 问题描述 在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来. 在Mybatis的文档明确写出,如果你 ...

  6. 利用CSS3选择器实现表格的斑马纹

    要用到的Css3选择器 element:nth-child(number){ } 选择器匹配属于其父元素的第 number 个子元素 参数 Number odd 奇数 even 偶数 W3School ...

  7. jQuery.qrcode 生成二维码,并使用 jszip、FileSaver 下载 zip 压缩包至本地。

    生成二维码 引用 jquery.qrcode.js  :连接:https://files.cnblogs.com/files/kitty-blog/jquery.qrcode.js .https:// ...

  8. QueryableHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  9. 5. CSS是什么

    CSS概念 CSS,层叠样式表,也叫做风格样式表.通过CSS我们可以为页面添加一个美丽的外观,获得更加良好的用户体验.不过值得我们注意的是和HTML一样,CSS也不是编程语言,它只是提供一种配置文件, ...

  10. JZ2440开发板:用按键点亮LED灯(学习笔记)

    本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ...