前言
字符串类型,即string类型,因为使用方便,不必担心内存问题,越界问题等等,还有在不太确定即将存入的字符串长度的时候使用是非常好的。本片中,将会对string类型的字符串和char类型的字符串对比使用讲解,作为随笔笔记,记录常用的用法,同时也会随着见识的增长随时更新
举栗子
string 类型字符串在使用的时候需要加上头文件#include<string>,而char类型的字符串数组在使用的时候往往要加上头文件#include<cstring>才能够使用。下面对比介绍string类型和char类型字符串的用法
(接下来的例子给变量命名我都用的是str1,str2…)
声明:
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*
关于字符串类型切割的,要想深入研究还可以搜搜其他大神的