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'.