C++常用String函数

本来是用C++做webserver,终于能够收到数据,发送文件,结果解析http字串的时候直接蒙了,怎样才能最高效的解析字符串?是用char还是string?我发现一旦在任何地方对性能的提升进行思考,任何代码都显得不简单。C++提供了那些API?就算我是个天才写出了非常快速的算法,那万一别人提供了那我岂不是重复造轮子了?我觉得我写代码之前会不会想的太多了??算了先不想这么多。。高性能的事以后再说,现在先在应用层搬砖,搬溜了再说。这里起码得先把别人早好的轮子记忆熟悉了,不然还得从0开始。

特别注意:大多函数都具有多个重载形式,能够实现不同的功能

构造string

const char *cp ="Hello world"
string s(cp);   //s="Hello world"
string s2(cp,2);//s2="ll0 world",即从第3个开始拷贝直到末尾。
string s3(cp,2,length); //从第3个开始拷贝,拷贝length个字符给s3
string s4(cp+2,length); //从cp[2]开始拷贝length个字符给s4

string截取

s.substr(int pos,int n)//返回一个string,包含从pos开始后n个字符。

string修改

s.insert(int pos,args)//在pos之前插入args指定的字符,pos可以是一个下标或一个迭代器。
s.erase(int pos,len)//删除从位置pos开始的len个字符,如果len被省略,那么则被认为擦除到末尾。
s.assign(args)//将s中的字符串替换为args指定的字符串,返回一个指向s的引用
s.append(args)//将args追加到s
s.replace(range,args)//删除s中范围内range的字符,替换为args指定的字符。range可以是个下标,也可以是个长度,或者是一对指向s的迭代器。返回一个指向s的引用。

string搜索

string类提供了6个不同的搜索函数,每个函数都有4个重载版本。

s.find(args)//查找s中args中第一次出现的位置
s.rfind(args)//查找s中args最后一次出现的位置
s.find_first_of(args)//在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args)//在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args)//在s中查找第一个不在args中的字符
s.find_last_not_of(args)//在s中查找最后一个不在args中的字符

args的形式包含如下:

c,pos           从s位置pos开始查找字符c,pos默认为0
s2,pos          从s中位置pos开始查找字符串s2。pos默认为0
cp,pos          从s中位置pos开始查找指针cp指向的以空字符结尾的C风格字符串
cp,pos,n        从s中位置pos开始查找指针cp指向的数组的前n个字符。pos和n无默认值。

string比较

compare有6个版本(我tm。。。直接麻了)

s.compare(args)

args的形式包含如下:

s2                   比较s和s2
pos1,n1,s2           将s从pos1开始的n1个字符与s2比较
pos1,n1,s2,pos2,n2   将s中从pos1开始的n1个字符与s2中从pos2开始的n2个字符进行比较
cp                   比较s与cp指向的以空字符串结尾的字符数组
pos1,n1,cp           将s中从pos1开始的n1个字符与cp指向的以空字符结尾的字符数组进行比较
pos1,n1,cp,n2        将s中从pos1开始的n1个字符与指针cp指向的地址开始的n2个字符进行比较

数值转换

to_string(val)    将数值转化成string

stoi(s, p, b)     返回s起始字串的数值,返回值与这几个函数名称对应,b是转换所用基数,默认为10。p是size_t指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不保存下标
stol(s, p, b)
stoul(s, p, b)
stoll(s, p, b)
stoull(s, p, b)

stof(s, p)     返回s的起始字串数值,返回值类型和函数名称相对应,参数p的作用和上面的一样
stod(s, p)
stold(s, p)

posted on 2021-07-26 22:01  EasternCabbage  阅读(174)  评论(0编辑  收藏  举报

导航