构造函数
- 构造函数:
string(const char* s)
字符指针
string s2("I am s2!!");
cout<<"s2 : "<
- 构造函数:
string(size_type n,char c)
重复char字符n次
string s3('$',15);
cout<<"s3 : "<
3.构造函数:string(const string& str)
复制构造函数
string s4(s2);
cout<<"s4 : "<
- 构造函数:
string()
默认构造函数
string s1;
cout<<"s1 : "<
- 构造函数:
string(const char* s,size_type n)
字符串的前n个字符(如果是 string参数,则赋值的是后面n个字符串)
string s5("I am a master",4);
cout<<"s5 : "<
- 构造函数:
string(begin,end)
如果是数组可以直接这样,因为数组名就是首字符地址。但是string对象则不能,因为不表示地址,所以&string[n]
char arr[]="I am Jeff and I am cool";
string s6(arr+5,arr+23);
cout<<"s6 : "<
string s7(&s6[5],&s6[10]);
cout<<"s7 : "<
- 构造函数:
string(const string& str,size_type pos=0,size_type n=npos)
从pos个字符开始,到n个字符结束。 npos表示字符串末尾。
string s8(s6,2,10);
cout<<"s8 : "<
功能
s1 +="I am Jeff "; += 重载运算符
cout<<"s1 now :"<
输入
C风格字符串
char info1[100],info2[100],info3[100];
cin>>info1; 读取一个字符
cin.getline(info2,100); 丢弃\n
cin.get(info3,100); 将\n留在队列
cout<<"info1 :"<
string风格
string str1,str2;
cin>>str1; 读取一个词,而不是一个character
getline(cin,str2); 读取一行,删除\n
cin.getline(info1,100,':')
getline(cin,str1,':')
确定边界字符,然后该字符会被删除
- C风格字符串,cin是调用对象。
cin.operator>>(info1)
string字符串,string是调用对象.operator>>(cin,str1)
- getline有三种情况会被stop:
- 到达文件尾,输入流eofbit被设置,fail()和eof()会返回true
- 遇到分界字符,分界字符从输入流删除,但不存储它
- 读取字符达到最大值(string::npos和可供分配内存字节数中较小一个),将设置输入流的failbit,fail()将返回true
- string的operator>>()函数遇到空白字符就会停止,并将空白字符符留在队列中
使用字符串
1. 比较字符串大小
2. 确定字符串长度【size()或者length()】
3. find()方法重载
size_type find(const string& str, size_type pos=0) const
从pos位置查找子字符串str,如果找到则返回首字符出现的位置。否则返回string::npos
size_type find(const char* s, size_type pos=0) const
同上
size_type find(const char* s,size_type pos=0, size_type n)
从pos位置开始,查找s前n个字符组成的子字符串,如果找到返回首字符位置,没找到返回string::npos
size_type find(char ch,size_type pos=0) const
从pos开始,查找ch。
find_first_of("hark")
就是找hark单词里的四个字符,如果出现某一个字符就返回首次出现的位置。
find_last_of("hark")
返回最后一次出现相关字符的位置
find_first_not_of(“xxx")
str1.find(ch) != string::npos
为true的时候就是该字符存在于字符串内。
4. 查看分配的内存块大小
capacity()
reserve(size)
【请求内存块最小长度】
实际上C++分配的内存块大小比字符串要大,如果字符串不断增大,C++将分配一个两倍大的内存块
5. 返回一个指向C-风格字符串的指针
c_str()
……还有很多很多功能