【C++】 用string类定义字符串数组「建议收藏」

【C++】 用string类定义字符串数组「建议收藏」#include#include#include#include#include#includeusingnamespacestd;intmain(){stringans;for(inti=0;i<4;i++){cin>>ans;cout<

大家好,欢迎来到IT知识分享网。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;

int main()
{
    string ans;
    for(int i=0; i<4; i++)
    {
        cin>>ans;
        cout<<ans<<endl;
    }

}


【C++】 用string类定义字符串数组「建议收藏」

用字符数组来存放字符串并不是最理想和最安全的方法。

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

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


一、字符串变量的定义和引用

1. 定义字符串变量


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


string string1; //定义string1为字符串变量


string string2=″China″; //定义string2同时对其初始化


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


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




2. 对字符串变量的赋值


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


string1=″Canada″;


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


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


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




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


string word=″Then″; //定义并初始化字符串变量word


word[2]=′a′; //修改序号为2的字符,修改后word的值为″Than″




3. 字符串变量的输入输出


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


cin>> string1; //从键盘输入一个字符串给字符串变量string1


cout<< string2; //将字符串string2输出


二、字符串变量的运算

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

  1. 字符串复制用赋值号
    string1=string2;
    其作用与“strcpy(string1,string2);”相同。
  2. 字符串连接用加号
    string string1=″C++″; //定义string1并赋初值
    string string2=″Language″;//定义string2并赋初值
    string1=string1 + string2;//连接string1和string2
    连接后string1为″C++ Language″。
  3. 字符串比较直接用关系运算符
    可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等关系运算符来进行字符串的比较。
    使用这些运算符比使用5.5.5节中介绍的字符串函数直观而方便。


三、字符串数组

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


string name[5]; //定义一个字符串数组,它包含5个字符串元素


string name[5]={″Zhang″,″Li″,″Fun″,″Wang″,″Tan″};


//定义一个字符串数组并初始化


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

【C++】 用string类定义字符串数组「建议收藏」

图5.11



关于字符串数组的几点说明:

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



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



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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26520.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信