C++ string类

要想使用标准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 0000 0 00 NUL 空字符(Null)
0000 0001 1 01 SOH 标题开始
0000 0010 2 02 STX 本文开始
0000 0011 3 03 ETX 本文结束
0000 0100 4 04 EOT 传输结束
0000 0101 5 05 ENQ 请求
0000 0110 6 06 ACK 确认回应
0000 0111 7 07 BEL 响铃
0000 1000 8 08 BS 退格
0000 1001 9 09 HT 水平定位符号
0000 1010 10 0A LF 换行键
0000 1011 11 0B VT 垂直定位符号
0000 1100 12 0C FF 换页键
0000 1101 13 0D CR 归位键
0000 1110 14 0E SO 取消变换(Shift out)
0000 1111 15 0F SI 启用变换(Shift in)
0001 0000 16 10 DLE 跳出数据通讯
0001 0001 17 11 DC1 设备控制一(XON 启用软件速度控制)
0001 0010 18 12 DC2 设备控制二
0001 0011 19 13 DC3 设备控制三(XOFF 停用软件速度控制)
0001 0100 20 14 DC4 设备控制四
0001 0101 21 15 NAK 确认失败回应
0001 0110 22 16 SYN 同步用暂停
0001 0111 23 17 ETB 区块传输结束
0001 1000 24 18 CAN 取消
0001 1001 25 19 EM 连接介质中断
0001 1010 26 1A SUB 替换
0001 1011 27 1B ESC 跳出
0001 1100 28 1C FS 文件分割符
0001 1101 29 1D GS 组群分隔符
0001 1110 30 1E RS 记录分隔符
0001 1111 31 1F US 单元分隔符
0111 1111 127 7F DEL 删除

ASCII可显示字符

二进制 十进制 十六进制 图形
0010 0000 32 20 (空格)(␠)
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25  %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
二进制 十进制 十六进制 图形
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
二进制 十进制 十六进制 图形
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~


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()

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值