C/C++字符串使用整理

一、用字符数组存储字符串,这是从C语言中继承的

1、声明

char name[6]={'l','i','u','h','a','\0'};或者 char name[6]="liuha";或者char name[6]={"liuha"};

这几种声明方式都是等价的,字符数组中会自动存储字符串的结束符'\0'

 

2、字符数字的输入输出

char name[6]; 

一次性输入输出:cin>>name;cout<<name;  //name表示数组中第一个值的地址

循环输入输出:for(int i=0;i<6;i++)

                      {

                              cout<<name[i];

                              cin>>name[i];

                       } 

若数组为二维:char namenum[3][2]

for(int i=0;i<3;i++)

   {

         cin>>namenum[i];       //一次输入一行

   }

 

3、字符数组的函数(包括头文件string)

    strcat(字符数组1,字符数组2);  strcpy(字符数组1,字符数组2);   strcmp(字符数组1,字符数组2);   strlen(字符数组);  

二、C++中增加了string头文件

1、声明(包括头文件)

    string param="I Love China";   //必须附加头文件string

    param中存储的只有“I Love China”,没有字符串结束符

2、字符串的输入输出

   cin>>param;cout<<param;

3、字符串的函数

string str1,str2;

连接函数   string str=str1+str2;

比较函数   if(str1>str2)

 

三、字符串数组

string name[3]={"zhangsan","lisi",“wangwu”};


name[0]中存储的只是“zhangsan”,不包括字符串结束符;

 

四、string和char的区别

string str1,str2     char str1[MAXSIZE],str2[MAXSIZE]  //假定要定义的char类型字符串数组的大小为MAXSIZE

 

比较:>,==,<,>=,<=等

       String类型:str1==str2;str1>=str2;str1<=str2 就不一一列举了,可以看出,string类型字符串比较是非常方便的,直接就像int类型那样直接比就可以了(当然比法是不一样的)

       Char类型:strcmp(str1,str2); 有返回值的,str1<str2 返回负数,str1==str2返回为0,str1>str2返回正数。某真心感觉很麻烦,每次比较都要用函数,当然也可以进行运算符重载直接像string类型那样比较,如果不嫌麻烦的话。

 

复制拷贝:

将str2中内容复制到str1中

string类型:str1=str2        char类型:strcpy(str1,str2);

string类型变量在定义的时候还可以拷贝构造函数,如string str1(str2);

 

连接:

将str2中内容连接到str1后头

String 类型:str1+=str2    char类型:strcat(str1,str2);

 

统计字符个数(字符串长度):

统计字符串中字符的个数:

String类型:str1.length();  str1.size();返回的值都是str1的长度

Char 类型:strlen(str1); 返回的值是str1的长度

 

清空字符串变量中所有数据:

String类型:str1..~string();

              或者:str1=””;

 

将char类型字符串转换成string类型:

char str1=”***”;

string str2(str1);

 

将string类型转换成char类型:

strcpy(str2,str1.c_str());

前边的str2是char类型的字符串,后边str1是string类型的。注意转换千万别越界

string中的某一个字符是可以直接保存到char类型字符中的,例如

string str=”123”

如ch=str[1];

那么输出ch打印出来的是2

字符串中的某一字符转换成int类型数字:

int num=str[i]-‘0’;

 

字符串类型与整数类型互相转换:

字符串转换成整数:

用atoi()函数,C语言中头文件是#include<stdlib.h>(C++中是#include<cstdlib>)

用法:atoi只能转char *类型的,如果是string类型的,需先转成char类型

int num=atoi(str);

 

整数转换成字符串:

Itoa()函数,将整数转换成char类型

itoa(num,str, radix);

num是int类型数字,str是最终转换成char的结果,radix是用多少进制保存,如2、8、10、16进制等

 

字符串中查找子串:

find()函数:

字符串详细内容见大神博客:

http://blog.csdn.net/laobai1015/article/details/62426137

基本用法

int key=find(str1,str2);

其中str1、str2都是string类型,函数的意思是在str1中查找str2第一次出现的位置并返回这个值,如果不存在则返回-1

 

strstr()函数:

char *str3=strstr(str1,str2);

str1,str2均为char*类型,函数的意思是在str1中查找str2,返回第一次出现str2的地址,如果没有找到则返回空

例如str1=”My name is”;    str2=”name”;

那么返回的str3为“name is”;

string类型中,字符串字串的截取:

 

substr()函数,用于string类型

string str;

str.substr(startnum, len);

其中 startnum 是起始字符的序号,len是从起始字符开始截取的字符串长度

那么,若要截取str中序号m到n间(其中不包括n)的子字符串则为

str.substr(m, n-m);

 

strtok()函数,用于char类型

char *str=strtok(str1,str2);

将字符串str1沿着str2切割,返回的是char*

 

posted @ 2019-04-30 14:22  蓝海Blue  阅读(455)  评论(0编辑  收藏  举报