接下来是标准库类型
string 字符串 char*
vector 动态数组 静态数组[]
map key/value 内部是以树的形式存储的0(log2N)哈希表0(1)
string介绍
- string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作
- typedef basic_string string;
- typedef basic_string<wchar_t> wstring;
- 要使用string类型对象,必须包含相关头文件
- #include
- using std::string
string s1;//默认构造函数,s1为空串
string s2(s1);//将s2初始化为s1的一个副本
string s3("value");//将s3初始化为一个空字符串字面值副本
string s4(n,'c');//将s4初始化为字符'c'的n个副本
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s1;
string s2("abcdefghijkl");
cout<<s2<<endl;
basic_string<char> s3("xxx");//等价 string s2("abc");
cout<<s3<<endl;
string s4("abcdefg",4);
cout<<s4<<endl;
string s5(s2,2,3);
cout<<s5<<endl;
string::iterator first = s2.begin() +1 ;
string::iterator last = s2.end();
string s6(first,last);//[first,last)
cout << s6<<endl;
}
- 常用的成员函数
string对象的定义和初始化
#include <string>
#include <iostream>
using namespace std;
int main()
{
string s1("abcdefhijkl");
cout<<s1.size()<<endl;
cout<<s1.length()<<endl;
cout<<s1.empty()<<endl;
cout<<s1.substr(1,2)<<endl;
cout<<s1.substr(1,string::npos)<<endl;
cout<<s1.find('j',1)<<endl;
string::size_type pos = s1.find('A',1);
if(pos == string::npos)
{
cout<<"not found"<<endl;
}else{
cout << pos <<endl;
}
string::size_type pos1 = s1.rfind('a',-1);
if(pos1 == string::npos)
{
cout<<"not found"<<endl;
}else{
cout << pos1 <<endl;
}
s1.replace(2,2,"AAAAAAA");
cout<<s1<<endl;
string s2 ="xxbjmfd";
s2.insert(2,"MMMM");
cout<<s2<<endl;
s2.append("jkjkd");
cout<<s2<<endl;
string s3="111";
s2.swap(s3);
cout<<s2<<endl;
cout<<s3<<endl;
string s8 = "abc";
s8[1] = 'B';
cout<<s8<<endl;
const string s10 = "xyz";
//s10[1]='D';//error不能给常量赋值 error s10[1]返回的是const char&
//cout<<s10<<endl;
string s11 = "111" + s10 + "222";
cout << s11 << endl;
cout << s3.c_str() << endl;
return 0;
}