STL详细介绍(更新中~~~)

目录

string

string的常见构造函数

string与char *(或const char*)之间的转换

string 转化为const char*

const char* 转化为string

 string 转化为 char*

char* 转化为string

find函数


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代表末尾的''*/

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值*/
            
原文地址:https://www.cnblogs.com/KeepZ/p/11143773.html