C++ string类

来源:互联网 发布:手机淘宝在哪输入口令 编辑:程序博客网 时间:2024/06/15 05:42

要想使用标准C++中string类,必须要包含

#include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件

using namespace std;

string类的构造函数:

string str();

string str(s1);    //s1char*字符串数组或string的对象,用 s初始化
string str(n, c);     //
n个字符c初始化

string str(s, length);    //schar*,用s为当前赋初值,长度任意

string str(s, index, length ); //sindex索引开始的子串初始化给str,长为length

string str(start, last); //将迭代器start, last间的初始化给str

 

string的赋值:
str.assign(s);//s
string对象或char*,把字符串s赋给当前字符
str.assign (s, n);// s
char*,用c字符串赋值
str.assign (s, index, len);//s
string对象,把s中从index赋给当前,长度为len
str.assign (first, last);//first
last为迭代器,把firstlast之间的部分赋给字符串str.assign (n, c);//nc字符串赋值

string的连接:
str += s;//
把字符串s连接到当前字符串的结尾 
str.append(s); //s
string对象或char*,把s连接到当前字符串结尾
str.append(s, n);//s
char*,把s的前n个字符连接到当前字符串结尾
str.append(s, pos, n);//s
string对象,把s中从pos开始的n个字符连接到当前
str.append(n, c);//
在当前字符串结尾添加n个字符c
str.append(first, last);//
把迭代器firstlast之间的部分连接到当前字符串的结尾

 

string的运算符:

运算符">","<",">=","<=","!=","=="均被重载用于字符串的比较;


string
类的字符操作:
str[n],str.at(n);//
均返回当前字符串中第n个字符引用;at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
str.data();//
将内容以字符数组形式返回,即返回第一个字符的指针
str.c_str();//
将内容以C_string返回
str.copy(s,n,pos);//
把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目


string
的特性描述:
str.capacity()
函数返回在重新申请更多的空间前字符串可以容纳的字符数.>=size()
str.max_size()
返回可存放的最大字符串的长度
str.size()
返回当前字符串的大小
str.length()
返回当前字符串的长度

str.reserve()函数设置本字符串的capacity 以保留num个字符空间
str.empty(); //
当前字符串是否为空
str. resize(len, c)
把字符串当前大小置为len,并用字符c填充不足的部分

 

string类的输入输出操作:

重载运算符operator>>用于输入,重载运算符operator<<用于输出操作。
函数getline(istream &in,string&s);//getline(cin, s)用于从输入流in中读取字符串到s中,以换行符'\n'分开。

cout << str.c_str() <<endl;//输出字符串

 


string
的比较:
s
可以为stringchar*,在>时返回1<时返回-1==时返回0
str.compare(s);//s
可以为stringchar*比较当前字符串和s的大小
str.compare(pos, n, s); //
比较当前字符串从pos开始的n个字符组成的字符串与s的大小
str.compare(pos, n, s, pos2, n2);//
比较当前字符串从pos开始的n个字符组成的字符串与spos2开始的n2个字符组成的字符串的大小


string
的子串:
str.substr(pos, n); //
返回pos开始的n个字符组成的字符串

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


string
类的查找函数: 
str.find(c, pos);//
pos开始查找字符c在当前字符串第一次出现的位置
str.find(s, pos);//s
char*string,从pos开始查找字符串s在当前第一次出现的位置
str.find(s, pos, n);//s
char*pos开始查找字符串s中前n个字符在当前串中的位置
//
查找成功时返回所在位置,失败返回string::npos的值 
rfind() const;
//
pos开始从后向前查找成功返回所在位置,失败时返回string::npos的值 
str.find_first_of//
pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos 
int find_first_not_of//
从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos 
//find_last_of
find_last_not_offind_first_offind_first_not_of相似,只不过是从后向前查找


string
类的替换函数: 
str.replace(p0, n0, s);//
删除从p0开始的n0个字符,然后在p0处插入串s
str.replace(p0, n0, s, n);//
删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
str.replace(p0, n0, n, c);//
删除p0开始的n0个字符,然后在p0处插入n个字符c
str.replace(first0, last0, s);//
[first0last0)之间的部分替换为字符串s
str.replace(first0, last0, s, n);//
[first0last0)之间的部分替换为s的前n个字符
str.replace(first0, last0, n, c);//
[first0last0)之间的部分替换为n个字符c
str.replace(first0, last0, first, last);//
[first0last0)之间的部分替换成[firstlast)之间的字符串


string
类的插入函数: 
str.insert(p0, s);
str.insert(p0, s, n);
str.insert(p0, s);
str.insert(p0, s, pos, n);
//
4个函数在p0位置插入字符串spos开始的前n个字符
str.insert(p0, n, c);//
此函数在p0处插入n个字符c
str.insert(it, c);//
it处插入字符c,返回插入后迭代器的位置
str.insert(it, first, last);//
it处插入[firstlast)之间的字符
str. insert(it, n, c);//
it处插入n个字符c


string
类的删除函数 
str.erase(first, last); //
删除[firstlast)之间的所有字符,返回删除后迭代器的位置
str. erase (it);//
删除it指向的字符,返回删除后迭代器的位置
str. erase(pos, n);//
删除pos开始的n个字符,返回修改后的字符串


string
类的迭代器处理: 
string
类提供了向前和向后遍历的迭代器iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。
string::iteratorstring::const_iterator声明迭代器变量,const_iterator不允许改变迭代的内容。常用迭代器函数有:
str.begin();    //
返回string的起始位置
str.end();    //
返回string的最后一个字符后面的位置
str.rbegin();    //
返回string的最后一个字符的位置
str.rend();    //
返回string第一个字符位置的前面
rbegin
rend用于从后向前的迭代访问,通过设置迭代器


ASCII控制字符

二进制十进制十六进制缩写可以显示的表示法名称/意义0000 0000000NUL␀空字符(Null)0000 0001101SOH␁标题开始0000 0010202STX␂本文开始0000 0011303ETX␃本文结束0000 0100404EOT␄传输结束0000 0101505ENQ␅请求0000 0110606ACK␆确认回应0000 0111707BEL␇响铃0000 1000808BS␈退格0000 1001909HT␉水平定位符号0000 1010100ALF␊换行键0000 1011110BVT␋垂直定位符号0000 1100120CFF␌换页键0000 1101130DCR␍归位键0000 1110140ESO␎取消变换(Shift out)0000 1111150FSI␏启用变换(Shift in)0001 00001610DLE␐跳出数据通讯0001 00011711DC1␑设备控制一(XON 启用软件速度控制)0001 00101812DC2␒设备控制二0001 00111913DC3␓设备控制三(XOFF 停用软件速度控制)0001 01002014DC4␔设备控制四0001 01012115NAK␕确认失败回应0001 01102216SYN␖同步用暂停0001 01112317ETB␗区块传输结束0001 10002418CAN␘取消0001 10012519EM␙连接介质中断0001 1010261ASUB␚替换0001 1011271BESC␛跳出0001 1100281CFS␜文件分割符0001 1101291DGS␝组群分隔符0001 1110301ERS␞记录分隔符0001 1111311FUS␟单元分隔符0111 11111277FDEL␡删除

ASCII可显示字符

二进制十进制十六进制图形0010 00003220(空格)(␠)0010 00013321!0010 00103422"0010 00113523#0010 01003624$0010 01013725 %0010 01103826&0010 01113927'0010 10004028(0010 10014129)0010 1010422A*0010 1011432B+0010 1100442C,0010 1101452D-0010 1110462E.0010 1111472F/0011 0000483000011 0001493110011 0010503220011 0011513330011 0100523440011 0101533550011 0110543660011 0111553770011 1000563880011 1001573990011 1010583A:0011 1011593B;0011 1100603C<0011 1101613D=0011 1110623E>0011 1111633F? 二进制十进制十六进制图形0100 00006440@0100 00016541A0100 00106642B0100 00116743C0100 01006844D0100 01016945E0100 01107046F0100 01117147G0100 10007248H0100 10017349I0100 1010744AJ0100 1011754BK0100 1100764CL0100 1101774DM0100 1110784EN0100 1111794FO0101 00008050P0101 00018151Q0101 00108252R0101 00118353S0101 01008454T0101 01018555U0101 01108656V0101 01118757W0101 10008858X0101 10018959Y0101 1010905AZ0101 1011915B[0101 1100925C\0101 1101935D]0101 1110945E^0101 1111955F_ 二进制十进制十六进制图形0110 00009660`0110 00019761a0110 00109862b0110 00119963c0110 010010064d0110 010110165e0110 011010266f0110 011110367g0110 100010468h0110 100110569i0110 10101066Aj0110 10111076Bk0110 11001086Cl0110 11011096Dm0110 11101106En0110 11111116Fo0111 000011270p0111 000111371q0111 001011472r0111 001111573s0111 010011674t0111 010111775u0111 011011876v0111 011111977w0111 100012078x0111 100112179y0111 10101227Az0111 10111237B{0111 11001247C|0111 11011257D}0111 11101267E~


cctpye中的字符函数

函数名称

返回值

isalnum()

如果参数是字母数字,即字母或数字,该函数返回true

isalpha()

如果参数是字母,该函数返回true

iscntrl()

如果参数是控制字符,该函数返回true

isdigit()

如果参数是数字(0-9),该函数返回true

isgraph()

如果参数是除空格之外的打印字符,该函数返回true

islower()

如果参数是小写字母,该函数返回true

isprint()

如果参数是打印字符(包括空格),该函数返回true

ispunct()

如果参数是标点符号,该函数返回true

isspace()

如果参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,该函数返回true

isupper()

如果参数是大写字母,该函数返回true

isxdigit()

如果参数是十六进制数字,即0—9、a—f、或者A—F,该函数返回true

tolower()

如果参数是大写字母,则返回其小写字母,否则返回该参数

toupper()

如果参数是小写字母,则返回其大写字母,否则返回该参数

 

原创粉丝点击