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) 编辑 收藏 举报