C/C++字符串类型的用法整理笔记

前言

字符串类型,即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*

关于字符串类型切割的,要想深入研究还可以搜搜其他大神的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值