C++用string 定义字符串数组
- #include<iostream>
- #include<string>
- using namespace std;
#include<iostream>
#include<string>
using namespace std;
- int main()
- {
- string str;
- cout<<"please input the str"<<endl;
- cin>>str;
- int n=str.length(); // 输出字符串长度
- cout<<"str length:"<<n<<endl;
int main()
{string str;cout<<"please input the str"<<endl;cin>>str;int n=str.length(); // 输出字符串长度cout<<"str length:"<<n<<endl;
用字符数组来存放字符串并不是最理想和最安全的方法。
C++提供了一种新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。
实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。
一、字符串变量的定义和引用
可以对字符串变量中某一字符进行操作,如
string word=″Then″; //定义并初始化字符串变量word
word[2]=′a′; //修改序号为2的字符,修改后word的值为″Than″
二、字符串变量的运算
- 字符串复制用赋值号
string1=string2;
其作用与“strcpy(string1,string2);”相同。 - 字符串连接用加号
string string1=″C++″; //定义string1并赋初值
string string2=″Language″;//定义string2并赋初值
string1=string1 + string2;//连接string1和string2
连接后string1为″C++ Language″。 - 字符串比较直接用关系运算符
可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。
使用这些运算符比使用5.5.5节中介绍的字符串函数直观而方便。
三、字符串数组
图5.11
关于字符串数组的几点说明:
- 在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。
- 并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。
- 在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。
- 每一个字符串元素中只包含字符串本身的字符而不包括′\0′。
可见用字符串数组存放字符串以及对字符串进行处理是很方便的。
在定义字符串数组时怎样给数组分配存储空间呢?实际上,编译系统为每一个字符串变量分配4个字节,在这个存储单元中,并不是直接存放字符串本身,而是存放字符串的地址。在本例中,就是把字符串″Zhang″的地址存放在name[0],把字符串″Li″ 的地址存放在name[1],把字符串″Fun″的地址存放在name[2]……图5.11只是一个示意图。在字符串变量中存放的是字符串的指针(字符串的地址)。
一、字符串连接函数 strcat
图5.10
二、字符串复制函数strcpy
- 在调用strcpy函数时,第一个参数必须是数组名(如str1),第二个参数可以是字符数组名,也可以是一个字符串常量。
- 可以用strcpy函数将一个字符串中前若干个字符复制到字符数组中去。
- 只能通过调用strcpy函数来实现将一个字符串赋给一个字符数组,而不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。
三、字符串比较函数strcmp
- 如果字符串1=字符串2,函数值为0。
- 如果字符串1>字符串2,函数值为一正整数。
- 如果字符串1<字符串2,函数值为一负整数。
字符串比较的规则与其他语言中的规则相同,即对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到′\0′为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
注意:对两个字符串比较,不能用以下形式:
if(str1>str2) cout<<″yes″;
字符数组名str1和str2代表数组地址,上面写法表示将两个数组地址进行比较,而不是对数组中的字符串进行比较。对两个字符串比较应该用
if(strcmp(str1,str2)>0) cout<<″yes″;
四、字符串长度函数strlen
C++用string 定义字符串数组相关推荐
- Java 定义字符串数组
String[] qyidArr = null; //定义数组 String psid2 = ""; //定义字符串 psid2 +=","+i ...
- python定义字符串数组_python数组声明
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小 ...
- 刚入门者必看(如何在c++里定义字符串数组)
像python写多了再回头看c++可能会觉得为什么c++不能像python那样灵活.毕竟python一个列表list直接把数字,字符,字符串拖家带口的写在列表里面,而c++貌似是不可以的. 废话不多说 ...
- java定义字符串数组_java字符数组用法总结,java字符串数组的定义与使用
java字符数组,java数组的定义与使用 二维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = ...
- C++定义字符串数组的方法
总结:将数组元素类型最好定义为string类型,而不是char*类型(VS2017无法通过) #include <iostream> using namespace std;int mai ...
- c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...
结构体中,字符串选项是用字符数组表示好,还是用字符指针表示好? typedef struct person{ char *name; int age; char sex[6]; }: 该结构体中nam ...
- python定义字符串数组初始化_字符数组及其定义和初始化,C语言字符数组详解...
字符数组及其定义和初始化,C语言字符数组详解 字符串的存储方式有字符数组和字符指针,我们先来看看字符数组. 因为字符串是由多个字符组成的序列,所以要想存储一个字符串,可以先把它拆成一个个字符,然后分别 ...
- python定义字符串数组_从字符串数组(或元组)在Python中创建动态sql“ in list”子句的“最佳”方法是什么?...
我正在从Python(使用MySQLDb)运行一个动态MySQL查询,该查询包括一个包含字符串值的" in list"子句.执行此功能的函数将获取一个值数组.如果有帮助,我可以将该 ...
- python定义字符串数组_Python数组定义方法
本文实例讲述了Python数组定义方法.分享给大家供大家参考,具体如下: Python中没有数组的数据结构,但列表很像数组,如: a=[0,1,2] 这时:a[0]=0, a[1]=1, a[[2]= ...
最新文章
- 【译】特征工程最佳实践
- 计算机vb实验报告,VB综合实验报告格式
- 开发日记-20190617 关键词 bash命令尝试模拟点击事件
- android不同机型上界面适配问题
- java thread_Java(多线程Thread)
- 【安卓开发 】Android初级开发(一)控件通用属性
- 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR
- 分布式锁的几种实现方式(转)
- 冬季海报素材温暖上线,PSD分层设计师最爱
- TypeError: 'str' object is not callable
- 教你用手机制作二寸证件照,操作简单,一学就会!
- 《客户端性能测试基本流程》
- Activiti实现流程定义的控制与修改
- android system image,android systemimage默認大小以及如何修改
- 使用COLMAP进行三维重构
- 50个安卓开发者应该熟悉的Android Studio技巧和资源
- 操作系统——如何求磁盘的物理地址
- 【论文】多核实时操作系统的确定性调度设计
- 微软 Azure人工智能认知服务打造语音提醒喝水助手(带源码和演示地址)
- Green Plum 非并行备份恢复方案