C和C++字符串处理函数.docx

上传人:b****6 文档编号:8670615 上传时间:2023-02-01 格式:DOCX 页数:9 大小:17.72KB
下载 相关 举报
C和C++字符串处理函数.docx_第1页
第1页 / 共9页
C和C++字符串处理函数.docx_第2页
第2页 / 共9页
C和C++字符串处理函数.docx_第3页
第3页 / 共9页
C和C++字符串处理函数.docx_第4页
第4页 / 共9页
C和C++字符串处理函数.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

C和C++字符串处理函数.docx

《C和C++字符串处理函数.docx》由会员分享,可在线阅读,更多相关《C和C++字符串处理函数.docx(9页珍藏版)》请在冰豆网上搜索。

C和C++字符串处理函数.docx

C和C++字符串处理函数

remberthis

strncpy(a,b,5);

a[5]='\0';

chara[10];

memset(a,'#',sizeof(a));

a[10]='\0';

刚开始学C/C++时,一直对字符串处理函数一知半解,这里列举C/C++字符串处理函数,希望对初学者有一定的帮助。

C:

charst[100];

1.字符串长度

strlen(st);

2.字符串比较

strcmp(st1,st2);

strncmp(st1,st2,n);把st1,st2的前n个进行比较。

3.附加

strcat(st1,st2);

strncat(st1,st2,n);n表示连接上st2的前n个给st1,在最后不要加'\0'。

4.替换

strcpy(st1,st2);

strncpy(st1,st2,n);n表示复制st2的前n个给st1,在最后要加'\0'。

5.查找

where=strchr(st,ch)ch为要找的字符。

where=strspn(st1,st2);查找字符串。

where=strstr(st1,st2);

C++:

stringstr;

1.字符串长度

len=str.length();

len=str.size();

2.字符串比较

可以直接比较

也可以:

pare(str2);

pare(pos1,len1,str2,pos2,len2);值为负,0,正。

nops长度到完。

3.附加

str1+=str2;

str1.append(str2);

str1.append(str2.pos2,len2);

4.字符串提取

str2=str1.substr();

str2=str1.substr(pos1);

str2=str1.substr(pos1,len1);

stringa=s.substr(0,4);//获得字符串s中从第0位开始的长度为4的字符串

5.字符串搜索

where=str1.find(str2);

where=str1.find(str2,pos1);pos1是从str1的第几位开始。

where=str1.rfind(str2);从后往前搜。

6.插入字符串

不是赋值语句。

str1.insert(pos1,str2);

str1.insert(pos1,str2,pos2,len2);

str1.insert(pos1,numchar,char);numchar是插入次数,char是要插入的字符。

7.替换字符串

str1.replace(pos1,str2);

str1.replace(pos1,str2,pos2,len2);

8.删除字符串

str.erase(pos,len)

str.clear();

9.交换字符串

swap(str1,str2);

10.C-->C++

char*cstr="Hello";

stringstr1;

cstr=cstr;

stringstr2(cstr);

对于ACMer来说,C的字符串处理要比C++的方便、简单,尽量用C的字符串处理函数。

C++中string类常用算法

string类的构造函数:

string(constchar*s);//用c字符串s初始化

string(intn,charc);//用n个字符c初始化

此外,string类还支持默认构造函数和复制构造函数,如strings1;strings2="hello";都是正确的写法。

当构造的string太长而无法表达时会抛出length_error异常

string类的字符操作:

constchar&operator[](intn)const;

constchar&at(intn)const;

char&operator[](intn);

char&at(intn);

operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。

constchar*data()const;//返回一个非null终止的c字符数组

constchar*c_str()const;//返回一个以null终止的c字符串

intcopy(char*s,intn,intpos=0)const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

string的特性描述:

intcapacity()const;//返回当前容量(即string中不必增加内存即可存放的元素个数)

intmax_size()const;//返回string对象中可存放的最大字符串的长度

intsize()const;//返回当前字符串的大小

intlength()const;//返回当前字符串的长度

boolempty()const;//当前字符串是否为空

voidresize(intlen,charc);//把字符串当前大小置为len,并用字符c填充不足的部分string类的输入输出操作:

string类重载运算符operator>>//用于输入,同样重载运算符operator<<用于输出操作。

函数getline(istream&in,string&s);//用于从输入流in中读取字符串到s中,以换行符'\n'分开。

string的赋值:

string&operator=(conststring&s);//把字符串s赋给当前字符串

string&assign(constchar*s);//用c类型字符串s赋值

string&assign(constchar*s,intn);//用c字符串s开始的n个字符赋值

string&assign(conststring&s);//把字符串s赋给当前字符串

string&assign(intn,charc);//用n个字符c赋值给当前字符串

string&assign(conststring&s,intstart,intn);//把字符串s中从start开始的n个字符赋给当前字符串

string&assign(const_iteratorfirst,const_itertorlast);//把first和last迭代器之间的部分赋给字符串

string的连接:

string&operator+=(conststring&s);//把字符串s连接到当前字符串的结尾

string&append(constchar*s);//把c类型字符串s连接到当前字符串结尾

string&append(constchar*s,intn);//把c类型字符串s的前n个字符连接到当前字符串结尾

string&append(conststring&s);//同operator+=()

string&append(conststring&s,intpos,intn);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾

string&append(intn,charc);//在当前字符串结尾添加n个字符c

string&append(const_iteratorfirst,const_iteratorlast);//把迭代器first和last之间的部分连接到当前字符串的结尾

string的比较:

boolperator==(conststring&s1,conststring&s2)const;//比较两个字符串是否相等

运算符">","<",">=","<=","!

="均被重载用于字符串的比较;

intcompare(conststring&s)const;//比较当前字符串和s的大小

intcompare(intpos,intn,conststring&s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小

intcompare(intpos,intn,conststring&s,intpos2,intn2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小

intcompare(constchar*s)const;

intcompare(intpos,intn,constchar*s)const;

intcompare(intpos,intn,constchar*s,intpos2)const;

compare函数在>时返回1,<时返回-1,==时返回0

string的子串:

stringsubstr(intpos=0,intn=npos)const;//返回pos开始的n个字符组成的字符串string的交换:

voidswap(string&s2);//交换当前字符串与s2的值

string类的查找函数:

intfind(charc,intpos=0)const;//从pos开始查找字符c在当前字符串的位置

intfind(constchar*s,intpos=0)const;//从pos开始查找字符串s在当前串中的位置

intfind(constchar*s,intpos,intn)const;//从pos开始查找字符串s中前n个字符在当前串中的位置

intfind(conststring&s,intpos=0)const;//从pos开始查找字符串s在当前串中的位置

//查找成功时返回所在位置,失败返回string:

:

npos的值

intrfind(charc,intpos=npos)const;//从pos开始从后向前查找字符c在当前串中的位置

intrfind(constchar*s,intpos=npos)const;

intrfind(constchar*s,intpos,intn=npos)const;

intrfind(conststring&s,intpos=npos)const;

//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string:

:

npos的值

intfind_first_of(charc,intpos=0)const;//从pos开始查找字符c第一次出现的位置

intfind_first_of(constchar*s,intpos=0)const;

intfind_first_of(constchar*s,intpos,intn)const;

intfind_first_of(conststring&s,intpos=0)const;

//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。

查找失败返回

string:

:

npos

intfind_first_not_of(charc,intpos=0)const;

intfind_first_not_of(constchar*s,intpos=0)const;

intfind_first_not_of(constchar*s,intpos,intn)const;

intfind_first_not_of(conststring&s,intpos=0)const;

//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string:

:

npos

intfind_last_of(charc,intpos=npos)const;

intfind_last_of(constchar*s,intpos=npos)const;

intfind_last_of(constchar*s,intpos,intn=npos)const;

intfind_last_of(conststring&s,intpos=npos)const;

intfind_last_not_of(charc,intpos=npos)const;

intfind_last_not_of(constchar*s,intpos=npos)const;

intfind_last_not_of(constchar*s,intpos,intn)const;

intfind_last_not_of(conststring&s,intpos=npos)const;

//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找

string类的替换函数:

string&replace(intp0,intn0,constchar*s);//删除从p0开始的n0个字符,然后在p0处插入串s

string&replace(intp0,intn0,constchar*s,intn);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符

string&replace(intp0,intn0,conststring&s);//删除从p0开始的n0个字符,然后在p0处插入串s

string&replace(intp0,intn0,conststring&s,intpos,intn);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符

string&replace(intp0,intn0,intn,charc);//删除p0开始的n0个字符,然后在p0处插入n个字符c

string&replace(iteratorfirst0,iteratorlast0,constchar*s);//把[first0,last0)之间的部分替换为字符串s

string&replace(iteratorfirst0,iteratorlast0,constchar*s,intn);//把[first0,last0)之间的部分替换为s的前n个字符

string&replace(iteratorfirst0,iteratorlast0,conststring&s);//把[first0,last0)之间的部分替换为串s

string&replace(iteratorfirst0,iteratorlast0,intn,charc);//把[first0,last0)之间的部分替换为n个字符c

string&replace(iteratorfirst0,iteratorlast0,const_iteratorfirst,const_iteratorlast);//把[first0,last0)之间的部分替换成[first,last)之间的字符串string类的插入函:

string&insert(intp0,constchar*s);

string&insert(intp0,constchar*s,intn);

string&insert(intp0,conststring&s);

string&insert(intp0,conststring&s,intpos,intn);

//前4个函数在p0位置插入字符串s中pos开始的前n个字符

string&insert(intp0,intn,charc);//此函数在p0处插入n个字符c

iteratorinsert(iteratorit,charc);//在it处插入字符c,返回插入后迭代器的位置

voidinsert(iteratorit,const_iteratorfirst,const_iteratorlast);//在it处插入[first,last)之间的字符

voidinsert(iteratorit,intn,charc);//在it处插入n个字符c

string类的删除函数

iteratorerase(iteratorfirst,iteratorlast);//删除[first,last)之间的所有字符,返回删除后迭代器的位置

iteratorerase(iteratorit);//删除it指向的字符,返回删除后迭代器的位置

string&erase(intpos=0,intn=npos);//删除pos开始的n个字符,返回修改后的字符串

string类的迭代器处理:

string类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。

用string:

:

iterator或string:

:

const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。

常用迭代器函数有:

const_iteratorbegin()const;

iteratorbegin();//返回string的起始位置

const_iteratorend()const;

iteratorend();//返回string的最后一个字符后面的位置

const_iteratorrbegin()const;

iteratorrbegin();//返回string的最后一个字符的位置

const_iteratorrend()const;

iteratorrend();//返回string第一个字符位置的前面rbegin和rend用于从后向前的迭代访问,通过设置迭代器

string:

:

reverse_iterator,string:

:

const_reverse_iterator实现

字符串流处理:

通过定义ostringstream和istringstream变量实现,头文件中

例如:

stringinput("hello,thisisatest");

istringstreamis(input);

strings1,s2,s3,s4;

is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"

ostringstreamos;

os<

cout<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1