string类API

C风格字符串(以\0结尾的字符数组)太过复杂,难于掌握,不太适合大程序的开发,所以C++STL中定义了一种string类,在头文件<string>中。

  string类和C风格字符串对比

  • char *是一个指针,string是一个类string封装了char *,管理这个字符串,是一个char*型的容器
  • string封装了很多实用的成员方法

如查找find,拷贝copy,删除erase,替换replace,插入insert....

  • 不用考虑内存释放和越界

       string类的常用API

  1. 构造
  2. 赋值
  3. 存取
  4. 拼接
  5. 查找
  6. 替换
  7. 比较
  8. 字串
  9. 插入
  10. 删除
/*构造*/
string();
//默认构造函数,创建一个空的字符串
string(const string& str);
//拷贝构造函数,使用一个string对象初始化另一个string对象
string(const char* s);
//含参构造函数,使用C风格字符串初始化
string(int n,char c);
//含参构造函数,使用n个字符c初始化
/*赋值*/ c重载赋值操作符=
string& operator=(const char *s);
//C风格字符串赋值给当前的字符串
string& operator=(const string& s);
//把字符串s赋给当前的字符串
string& operator=(const char c);
//字符赋值给当前的字符串
成员函数assign
string& assign(const char*s)
//C风格字符串赋值给当前的字符串
string& assign(const char*s,int n);
//把C风格字符串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个字符赋值给当前字符串
/*存取*/
char& operator[](int n);
//通过[]下标方式获取字符
//使用下标操作符获取字符串时,如果下标越界,程序将会强制终止
/*成员函数 at*/
char& at(int n);
//通过at方法获取字符
//使用at方法获取字符时,如果下标越界,at方法内部会抛出异常(exception),可以使用try-catch捕获并处理该异常
/*拼接*/
string& operator+=(const string& str);
//将字符串str追加到当前字符串的末尾
string& operator+=(const char* str);
//将C风格字符数组追加到当前字符串末尾
string& operator+=(const char c);
//将字符C追加到当前字符串末尾
/*成员函数append*/
string& append(const char*s);
//把C风格的字符数组s连接到当前字符串结尾
string& append(const char*s,int n);
//把C风格字符数组s的前n个字符连接到当前字符串结尾
string& append(const string& s);
//将字符串s追加到当前字符串末尾
string& append(const string&s,int pos,int n);
//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string& append(int n,char c);
//在当前字符串结尾添加n个字符c
/*查找*/成员函数find
int find(const string& str,int pos=0)const;
//查找str在当前字符串中第一次出现的位置,从pos开始查找栈,pos默认为0
int find(const char *s,int n=0)const;
//查找C风格字符串s在当前字符串中第一次出现的位置,从pos开始查找,pos默认为0
//当查找失败时,find方法会返回-1,-1已经被封装为string的静态成员常量string::npos
static const size_t npos=-1;
/*成员函数rfind*/
//find方法通常查找字符串第一次出现的位置,而rfind方法通常查找字串最后一次出现的位置
int rfind(const string& str,int pos=npos)const;
//从pos开始向左查找最后一次出现的位置,pos默认为npos
int rfind(const chat* s,int pos=npos)const;
//查找s最后一次出现的位置,从pos开始自左查找,pos默认为npos
//关于string::npos
//-1其实是size_t类的最大值,所以string::npos其实表示“直到字符串结束”。 同时我们也可以发现string::npos和container.end()迭代器其实是相同含义的,说明我们STL的各个板块的设计是统一的 
/*成员函数replace*/
string& repalce(int pos,int n,const string& str)
//替换从pos开始n个字符为字符串s
string& replace(int pos,int n,const char* s);
//替换从pos开始的n个字符为为字符串s
/*成员函数compare*/
int compare(const string& s)const;//与字符串s比较
int compare(const char *s)const;//与C风格字符数组比较
//compare函数根据字典序比较,在当前字符串比给定字符串小时返回-1,在当前字符串比给定字符串大时返回1,相等时返回0 
//重载比较操作符
bool operator<(const string& str)const;
bool operator<(const char* str)const;
bool operator<=(const string& str)const;
bool operator<=(const char* str)const;
bool operator==(const string& str)const;
bool operator==(const char* str)const;
bool operator>(const string& str)const;
bool operator>(const char* str)const;
bool operator>=(const string& str)const;
bool operator>=(const char* str)const;
bool operator!=(const string& str)const;
bool operator!=(const char* str)const;
/*子串*/
string substr(int pos=0,int n=npos)const;
//返回由pos开始的n个字符组成的字符串,string::npos的含义是截取到整个字符串结束
/*成员函数insert*/
string& insert(int pos,const char *s);
//在pos位置插入C风格字符数组
string& insert(int pos,const string& str);
//在pos位置插入字符串str
string& insert(int pos,int n,char c);
//在pos位置插入n个字符c 
/*删除*/
string& erase(int pos,int n=npos);
//删除从pos开始的n个字符
//string::npos的含义是删除到整个字符串结束

 

Java String API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具 : Arrays.toString(names) String String replace(char oldChar, char newChar) String replace(CharSequence target, CharSequence replacement) String[] split(String regex) boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引 int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束 boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始 boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始 int length():返回字符串的长度: return value.length char charAt(int index): 返回某索引处的字符return value[index] boolean isEmpty():判断是否是空字符串:return value.length == 0 String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写 String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写 String trim():返回字符串的副本,忽略前导空白和尾部空白 boolean equals(Object obj):比较字符串的内容是否相同 boolean equalsIgnoreCase(String anotherString):与equals方法似,忽略大小写 String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+” String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值