string 容器
一)简述:
string 是一个类 而char*是一个字符指针。
string 封装了char×, 用来管理char *, 是一个char*的容器。
sting自己不用考虑 内存和 越界, 自带函数, find copy insert等。。。。。。。。。
二) 构造函数:
默认构造函数:
string(); //构造一个空的字符串string s1。
拷贝构造函数:
string(const string &str); //构造一个与str一样的string。如string s1(s2)。
带参数的构造函数
string(const char *s); //用字符串s初始化
string(int n,char c); //用n个字符c初始化
三) 遍历存取
operator[]和at()-------------------------------at()会抛出异常
可以使用try catch 来捕捉异常时可以用。
四) 如果转化为c风格的可以是使用才 c_str();
五) copy
int copy(char *s, int n, int pos=0) const;
把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目。注意要保证s所指向的 空 间足够大以容纳当前字符串,不然会越界。
六)获取 长度 length(), 判断是否:empty()。
七)赋值
string &operator=(const string &s);//把字符串s赋给当前的字符串
string &assign(const char *s); //把字符串s赋给当前的字符串
string &assign(const char *s, int n); //把字符串s的前n个字符赋给当前的字符串
string &assign(const string &s); //把字符串s赋给当前字符串
string &assign(int n,char c); //用n个字符c赋给当前字符串
string &assign(const string &s,int start, int n); //把字符串s中从start开始的n个字符赋给当前字符串
八)链接
string &operator+=(const string &s); //把字符串s连接到当前字符串结尾
string &operator+=(const char *s);//把字符串s连接到当前字符串结尾
string &append(const char *s); //把字符串s连接到当前字符串结尾
string &append(const char *s,int n); //把字符串s的前n个字符连接到当前字符串结尾
string &append(const string &s); //同operator+=()
string &append(const string &s,int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string &append(int n, char c); //在当前字符串结尾添加n个字符c
九)比较
int compare(const string &s) const; //与字符串s比较
int compare(const char *s) const; //与字符串s比较
compare函数在>时返回 1,<时返回 -1,==时返回 0。比较区分大小写,比较时参考字典顺序,排越前面的越小。大 写的A比小写的a小。
十) string的子串
string substr(int pos=0, int n=npos) const; //返回由pos开始的n个字符组成的子字符串
十一)查找、替换
查找 三种类型 分别是:
1)单个字符串;
2)c类型的字符串。
3) string 类型字符串
int find(char c,int pos=0) const; //从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos=0) const; //从pos开始查找字符串s在当前字符串的位置
int find(const string &s, int pos=0) const; //从pos开始查找字符串s在当前字符串中的位置
find函数如果查找不到,就返回-1
int rfind(char c, int pos=npos) const; //从pos开始从后向前查找字符c在当前字符串中的位置
int rfind(const char *s, int pos=npos) const;
int rfind(const string &s, int pos=npos) const;
//rfind是反向查找的意思,如果查找不到, 返回-1
替换
string &replace(int pos, int n, const char *s);//删除从pos开始的n个字符,然后在pos处插入串s
string &replace(int pos, int n, const string &s); //删除从pos开始的n个字符,然后在pos处插入串s
void swap(string &s2); //交换当前字符串与s2的值
十二) String的区间删除和插入
string &insert(int pos, const char *s);
string &insert(int pos, const string &s);
//前两个函数在pos位置插入字符串s
string &insert(int pos, int n, char c); //在pos位置 插入n个字符c
string &erase(int pos=0, int n=npos); //删除pos开始的n个字符,返回修改后的字符串
/*************************************************************************
> File Name: str.cpp
> Author: cl007
> Mail: cl007@126.com
> Created Time: Tue 01 Sep 2015 06:16:48 PM PDT
************************************************************************/
#include<iostream>
#include<string>
using namespace std;
int main(int argc, char *argv[])
{
cout << "start it \t thank you "<<endl;
string str1, str2;
str1 = "hello world";
str2.assign("world very good");
cout<< str1 + "\t" +str2<<endl;
string str3;
str3.assign(2, 'w');
cout<< str3 <<endl;
str3.assign(str1, 1, 4);
cout << str3 <<endl;
string str4;
str4 += "wo men shi dui de ";
str4 += str1;
cout << str4 <<endl;
if(str1.compare(str4) > 1)
{
cout << str1 <<endl;
}
else
{
cout << str4 << endl;
}
string str5;
str5 = str4.substr(3,5);
cout << str5 << endl;
string::size_type npos;
npos = str4.find('w', 0);
cout << npos <<endl;
cout << str5.at(npos)<<endl;
return 0;
}