C++易错易混库函数及语法归纳

C++里有很多自带的函数,在使用的时候我总是会忘记具体的用法,今天在这里汇总一下我自己易错的一些函数。

substr函数:substr有两种用法

假设有string s="0123456789",则有:

string sub1=s.substr(5);  //这里只有一个数字5,代表从下标5开始一直到结尾:sub1="56789";
string sub2=s.substr(5,3);  //从下标为5开始截取长度为3的字符串,则此时的sub2="567";

sub1="56789";   sub2="567". 

 insert函数:insert有三种用法

假设有string str="0123456789",则有:

string a, b, c="123456";
a=str.insert(4,"123");  //在下标为4的位置,插入字符串"123"

b=str.insert(4,5,'x'); 或 b=str.insert(str.begin()+4,5,'x')  //在下标为4的位置,插入字符串5个'x',即"xxxxx"

c=str.insert(4,c,0,5); 或  c=str.insert(str.begin()+4,c.begin(),c.end())  //在下标为4的位置,插入字符串c中从下标0到下标5的字符串,即"123456"

a="0123123456789";     b="0123xxxxx456789";      c="0123123456456789".

 empty函数:如果为空,返回值是TRUE;如果不为空,返回值是FALSE.

erase函数:有四种用法 

vector<string> e = {"a","b","c","d","e","f","g"};
e.erase("c");        //删除字符串“c”
auto it = e.end()-1;  //.end()指向末尾的后一个元素,因此需要-1,指向末尾元素    
e.erase(it);           //删除末尾元素“e”
auto it2 = e.begin()+1;
auto it3 = e.end()-2;
e.erase(it2,it3);    //删除it2到it3之间的元素
auto it = a.begin();
auto it2 = a.find("c");        //it2指向“c”所在位置
auto it3 = a.erase(it,it2);    //删除it到it2之间的所有元素,即“a”和“b”
a.erase(it3);                  //此时删除的是“c”,即先前it2所指,因为第三种用法返回的就是第二个迭代器所指位置

memset函数:

void *memset(void *s,int c,unsigned long n);

函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。

char str[10];
char *p = str;
memset(str, 0, sizeof(str)); //因为int中的0与char中的\0等价,所以赋值0就相当于给str中所有元素赋值一个'\0'.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡沛玮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值