• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 深入解析C++中的字符数组和处理字符串的方法

深入解析C++中的字符数组和处理字符串的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++字符数组,c++字符数组赋值,c++字符数组初始化,c++字符数组长度,c++转义字符等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C++字符数组
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方便的用法和函数。
字符数组的定义和初始化

定义字符数组的方法与前面介绍的类似。例如:

  char c[10];
  c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;
</div>

上面定义了c为字符数组,包含10个元素。在赋值以后数组的状态如图所示。


对字符数组进行初始化,最容易理解的方式是逐个字符赋给数组中各元素。如

  char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};
</div>


把10个字符分别赋给c[0]~c[9]这10个元素。

如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如:

  char c[]={'I',' ','a','m',' ','h','a','p','p','y'};
</div>


也可以定义和初始化一个二维字符数组,如
    字符数组的赋值与引用

只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值。如:

  char c[5];
  c={'C','h','i','n','a'}; //错误,不能对整个数组一次赋值
  c[0]='C'; c[1]='h';c[2]='i';c[3]='n';c[4]='a'; //对数组元素赋值,正确
</div>

如果已定义了a和b是具有相同类型和长度的数组,且b数组已被初始化,请分析:

  a=b; //错误,不能对整个数组整体赋值
  a[0]=b[0]; //正确,引用数组元素
</div>

【例】设计和输出一个钻石图形。

#include <iostream>
using namespace std;
void main( )
{
  char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
  int i,j;
  for (i=0;i<5;i++)
  {
   for (j=0;j<5;j++)
   cout<<diamond[i][j]; //逐个引用数组元素,每次输出一个字符
   cout<<endl;
  }
}
</div>

C++处理字符串的方法—字符串类与字符串变量
用字符数组来存放字符串并不是最理想和最安全的方法。

C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。

实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。
字符串变量的定义和引用

1) 定义字符串变量
和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string。如:

  string string1; //定义string1为字符串变量
  string string2=″China″; //定义string2同时对其初始化
</div>

应当注意:要使用string类的功能时,必须在本文件的开头将C++标准库中的string头文件包含进来,即应加上

  #include <string> //注意头文件名不是string.h
</div>

2) 对字符串变量的赋值
在定义了字符串变量后,可以用赋值语句对它赋予一个字符串常量,如:

  string1=″Canada″;
</div>


既可以用字符串常量给字符串变量赋值,也可以用一个字符串变量给另一个字符串变量赋值。如:

  string2=string1; //假设string2和string1均已定义为字符串变量
</div>


不要求string2和string1长度相同,假如string2原来是″China″,string1原来是″Canada″,赋值后string2也变成″Canada″。在定义字符串变量时不需指定长度,长度随其中的字符串长度而改变。

可以对字符串变量中某一字符进行操作,如:

  string word=″Then″; //定义并初始化字符串变量word
  word[2]=′a′; //修改序号为2的字符,修改后word的值为″Than″
</div>

3) 字符串变量的输入输出
可以在输入输出语句中用字符串变量名,输入输出字符串,如:

  cin>> string1; //从键盘输入一个字符串给字符串变量string1
  cout<< string2; //将字符串string2输出
</div>


字符串变量的运算

在上一节中可以看到: 在以字符数组存放字符串时,字符串的运算要用字符串函数,如strcat(连接)、strcmp(比较)、strcpy(复制),而对string类对象,可以不用这些函数,而直接用简单的运算符。

1) 字符串复制用赋值号

  string1=string2;
</div>

其作用与“strcpy(string1,string2);”相同。

2) 字符串连接用加号

  string string1=″C++″; //定义string1并赋初值
  string string2=″Language″;//定义string2并赋初值
  string1=string1 + string2;//连接string1和string2
</div>


连接后string1为″C++ Language″。

3) 字符串比较直接用关系运算符
可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。
字符串数组

不仅可以用string定义字符串变量,也可以用string定义字符串数组。如:

  string name[5]; //定义一个字符串数组,它包含5个字符串元素
  string name[5]={″Zhang″, ″Li″, ″Fun″, ″Wang″, ″Tan″}; //定义一个字符串数组并初始化
</div>

此时name数组的状况如图所示。


关于字符串数组的几点说明:
在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。
并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。
在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。
每一个字符串元素中只包含字符串本身的字符而不包括′\0′。

可见用字符串数组存放字符串以及对字符串进行处理是很方便的。

在定义字符串数组时怎样给数组分配存储空间呢?实际上,编译系统为每一个字符串变量分配4个字节,在这个存储单元中,并不是直接存放字符串本身,而是存放字符串的地址。在本例中,就是把字符串″Zhang″的地址存放在name[0],把字符串″Li″ 的地址存放在name[1],把字符串″Fun″的地址存放在name[2]……上只是一个示意图。在字符串变量中存放的是字符串的指针(字符串的地址)。

 

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++计算每个字符出现的次数
  • C++字符数组的输入输出和字符串结束标志使用讲解
  • 深入解析C++中的字符数组和处理字符串的方法
  • C++中可正确获取UTF-8字符长度的函数分享

相关文章

  • 2017-05-28北邮考研复试C语言上机题目精选
  • 2017-05-28使用代码验证linux子进程与父进程的关系
  • 2017-05-28关于移位操作的一点重要说明
  • 2017-05-28C++ MD5的源码实例详解
  • 2017-05-28C++运算符重载规则详解
  • 2017-05-28简单说说STL的内存管理
  • 2017-05-28判断给定的图是不是有向无环图实例代码
  • 2017-05-28浅谈哈希表存储效率一般不超过50%的原因
  • 2017-05-28Protocol Buffer技术深入理解(C++实例)
  • 2017-05-28C++读写.mat文件的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • linux之sort命令的用法
    • C++设计模式之建造者模式
    • C++运算符重载 成员函数与友元函数详解
    • VC解析XML文件-CMarkup的使用详解
    • C语言的冒泡排序和快速排序算法使用实例
    • 清除3389远程登录日志
    • C语言new操作的安全性分析
    • 浅析C++中的虚函数
    • Linux下semop等待信号时出现Interrupted System Call错误(EINTR)解决方法
    • 二叉树前序遍历的非递归算法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有