db2 replace函数的用法_C++常用函数整理

1、s.c_str();

C语言中没有string类型,C语言接口函数(例:strstr())的string需要转char*。

用法:string转char*:c_str()

2、strstr(str1.c_str(),str2);

C语言中的函数,在字符串中查找另一个字符串是否存在,不存在返回false,存在返回true。

char * strstr(const char *str1, const char *str2);

用法:strstr()

3、s.replace(pos, len, str);

用str来替换下标从pos开始替换长度为len的子串。

用法:replace()

4、s.at(i);

定位字符串string类型中字符。等价于char*类型中的s[i]。

5、s.substr(pos,n);

截取s中从pos开始(包括0)的n个字符的子串,并返回。n可不写,默认截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回。

字符串常见函数

6、rand()%n,srand((int)time(0));

#include <cstdlib>
#include <ctime>
srand((int)time(0));    //产生随机种子,每次产生的随机数不一样
int a  = x + rand()%10;             //产生[x,10)之间的随机数

7、i=str.find(s.c_str(),pos);

找到子串返回其下标,否则返回string::npos,npos是-1的无符号表示,是个大正数。

4781b7c7b9578032850e095aa1c38984.png
npos可能是个很大的正数

8、char*和string转换

  • char*变string:
void function(char* str){    //统计char*字符串长度不能用str.size(),只能用strlen(str);
string s(str);  //也可string s = str;
}
或:
char a[] = "ABCE";
string str(a);
  • string变char*:
char str[s.size()+1];    //需要预先指定大小
auto ret=s.c_str();   //先把string类型的s变为char*
strcpy(str,ret);       //再把char*拷贝给str,注意string变char*用strcpy复制

//注:不能直接用str=s.c_str()来转,会报错
  • string类型也可以直接用str[i]下标访问字符。
  • 初始化时char* str和char str[]的区别:前者指向常量(不可变常量值),后者可以改变str的值。
  • string转char*的数组长度问题,需要+1,还有个结束符'0',不加可能会报错。
int len=aa.length();
char* bb=new char[len+1];    //还有个结束符'0'
strcpy_s(bb,len+1,aa.c_str());
...
delete [] bb;  //用完后

9、s.insert(i,"%20");

在字符串s中的i位置插入"%20"字符串。

ret.insert(vec);//在集合ret中插入元素vec,vec也可以是容器,要看集合ret的类型。

10、sort(vec.begin(),vec.end());

对整型容器vec中的元素排序。前n项排序则上限用vec.begin()+n;

还可以加个cmp的函数来按想要的方式排序:sort(vec.begin(),vec.end(),cmp);

sort(vec.begin(),vec.end(),cmp);
//这是对整型数组按字典排序  
bool cmp(int a,int b){
    string s1 = to_string(a);
    string s2 = to_string(b);
    return s1<s2;
}
//这是对整型从大到小逆向排序
bool cmp(int x,int y){
    return x>y;
}

11、s.assign(vec.begin(), vec.end());

容器拷贝,把容器或者集合vec中元素拷贝到容器s中,通常和集合使用去重:

vector<int> vec;
set<int> ret(vec.begin(), vec.end());  //vec的元素逐个插入集合ret
vec.assign(ret.begin(), ret.end());

或者

vector<int> vec;
set<vector<int>> ret;
ret.insert(vec);         //整个vec一次性插入集合ret
for(auto x:ret)
   vec.push_back(x);  //set再逐个插入容器vec,即可去重

对于数组拷贝到容器:

int a[] = {...};
vec.assign(a,a+a.size())

12、stoi 和 to_string()

string转整数:int y = stoi(s); 或者int y = atoi(s.c_str());

整数转string:string s = to_string(y);

13、reverse(y.begin(),y.end());

reverse函数功能是逆序(或反转),多用于字符串、数组、容器。反转在[first,last)范围内的顺序,头文件是#include <algorithm>。例:

660041151f6358cb2cef82de126b32a0.png

14、s.erase(pos,n);

string.erase(pos,n) //删除从pos开始的n个字符,例:s.erase(1,2);

s.erase(s.begin()); //删除pos处的一个字符(pos是string类型的迭代器)

s.erase(s.begin()+1,s.end()-1); //删除从first到last中间的字符(first和last都是string类型的迭代器)

(注:也可用于整型容器)

15、vec.clear();

清空vec的内容,更多有关vec的操作如图:

bb77d0958c93cc4f897638cd8367391c.png

16、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值