- C++中初始化string对象有这几种方式
-
- string str; //这样初始化时,str为空字符
- string str = "bbb"; //将右边的字符串字面值赋值给str字段
- string str1("AAA"); //用字符串字面值初始化str1
- string str2(str1); //将str2初始化为str1的一个副本
- string str4(5,'a'); //结果为aaaaa,这样可以指定初始化成'a'字符的5个副本
string的常用操作 | 说明 |
str.empty() | 检查str是否是空字符串,若str为空字符串,则返回true,否则返回false |
str.size() | 返回str中字符的个数 |
str[n] | string类型其实是一个char数组,所以可以用索引访问指定位置的字符,位置从0开始 |
str+str1 | 字符串连接和C#一样,将两个字符串连接成新的字符串,返回新的字符串 |
str = str1 | 字符串赋值操作 |
str == str2 | 字符串比较相等 |
str != str2 | 字符串比较不相等 |
string str = "hello"+"world" X | 这样是不合法的,字符串的+号相连C++只允许和类型是string的字段相连接,不允许两个字符串字面值直接相连接 |
str.substr(1,5) | 返回从str字符串中第1个位置开始,往后的5个字符组成的字符串,如果只填了位置参数,没有填个数的话,那么默认个数为填的位置参数后面的字符串长度,如果输入的位置参数超过了字符的长度,那么会抛出std::out_of_range的异常 |
str.insert(2,str1) | 在指定位置插入字符串,例如在str字符串的第二个位置,插入str1的字符串 |
str.begin() | 得到指向字符串开头的Iterator |
str.end() | 得到指向字符串结尾的Iterator |
str.rbegin() | 得到指向反向字符串开头的Iterator,也就是end |
str.rend() | 得到指向反向字符串结尾的Iterator,也就是begin |
str.length() | 和size的函数是一样的,得到的是字符串的大小 |
str.max_size() | 字符串可能的最大大小 |
str.capacity() | 在不重新分配内存的情况下,字符串容器的大小 |
str.append("aaa") | 在字符串的末尾追加字符 |
str.erase() | 删除字符串的内容 |
str.clear() | 清空字符容器中所有内容,和erase函数不一样的是,这个函数返回的是void |
str.replace(1,1,"L") | 字符替换,例如从字符串str的第一个位置开始往后的1个字符,替换成'L' |
str.copy() | 字符串拷贝 |
str.find() | 查找,返回基于0的索引号 |
str.rfind() | 反向查找 |
暂时只记录下目前用得到的字符串的函数,后面用到的其他的,再行补上
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
string str = "abcdefg";
//str的第1个位置往后的5个字符组成的子字符串
string str1 = str.substr(1,5);
//结果:bcdef
cout << str1 << endl;
string str2 = "123";
//在str字符串的第2个位置插入str2字符串
string str3 = str.insert(2, str2);
//结果:ab123cdefg
cout << str3 << endl;
str = "abcdefg";
//在str字符串的第2个位置插入,str2字符串的第1个位置到后面的2个字符
//这个2当然是包括从第1个位置的字符
string str4 = str.insert(2, str2, 1, 2);
//结果:ab23cdefg
cout << str4 << endl;
str = "abcdefg";
//结果同上:ab23cdefg,如果后面字符的个数没有填写,那么代表个数为str2的字符串的长度
string str5 = str.insert(2, str2, 1);
cout << str5 << endl;
str = "abcdefg";
//在str字符串中第2个位置插入3个':'字符
string str6 = str.insert(2,3,':');
//结果:ab:::cdefg
cout << str6 << endl;
str = "abcdefg";
string::iterator it; //字符串的迭代器
it = str.insert(str.begin()+1,'-');
//-
cout << *it << endl;
//a-bcdefg
cout << str << endl;
system("pause");
return 0;
}