STL详细介绍(更新中~~~)
目录
string与char *(或const char*)之间的转换
string
帮助链接:https://www.jianshu.com/p/497843e403b4
string的常见构造函数
//通过const char * 初始化
string s1 = "aaaa";
//构造函数初始化
string s2("bbbbb");
//通过拷贝构造函数来初始化对象s3
string s3 = s2;
//用10个'a'字符来初始化字符串
string s4(10, 'a');
string与char *(或const char*)之间的转换
string 转化为const char*
string str("aaaaaaa");
const char *s = str.c_str(); /*str.c_str()返回的应该是const char* 类型*/
const char* 转化为string
const char *p1 = "123345";
string str1 = p1; /*直接拷贝*/
//或者这样
string str2(p1);
string 转化为 char*
char buf[200] = {0};
str.copy(buf, 3, 0); /*将str中的3个字符拷贝到buf中,0代表末尾的'\0'*/
char* 转化为string
/*与const char*类似,只不过是char*类型的罢了*/
find函数
参考博客:https://blog.csdn.net/wangjingqi930330/article/details/81938998, https://codeday.me/bug/20170329/8164.html,
https://blog.csdn.net/sinat_34328764/article/details/79946650
对于vector, list,只能用 find(ar1.begin(), ar1.end(), target)来看是否有target这个元素,这里find返回一个迭代器,也就是指针,对于vector而言,若想得到target对应的下标,则应用它减去ar1.begin();这个主要用于判断是否含有target,若不含有,则返回ar1.end(),因此常用 if(find(ar1.begin(), ar1.end(), "bbb") != ar1.end()) 来判断。
而对于set,multiset而言,还可以用a.find(target),用myset.find(x) != myset.end()来判断是否有这个元素
对于map,multimap而言,可以用a.find(key),返回一个迭代器,若没有这个key值,则返回a.end().其用处除了这个还可以用迭代器直接访问这个key对应的value,代码如下:
map<string, string>::iterator it = p.find(str); /*查找p的key中是否含有str*/
if(it != p.end())
cout << it->second << endl; /*如果有,则输出它对应的value值*/