1 几个说明
1)头文件
#include<string>
2)string::size_type 是string class 定义的一个无正负号整数类型
2 string转换成Cstring
1)string::data() 和string::c_str() 转换成字符数组末尾带’\0’
2) string::copy() 末尾不带’\0’
3 构造函数,string类几种常用的构造函数如下
string str1 = "a string"; //隐式调用,用字符串常量初始化
string str2("a string"); //显示调用,用字符床常量初始化
string str3(str1); //显示调用,用字符串变量初始化
string str4 = str1; //拷贝构造函数
string str5(str1,2,3); //用str1始于位置2且长度顶多是3的部分初始化str5
str string6(str1,2); //用str1始于位置2的部分初始化str6
char Cstr[] = {'a',' ','s','t','r','i','n','g','\0'};
string str7(Cstr); //用字符数组/C风格字符串初始化str7
string str8(Cstr,5); //用字符数组/C风格字符串的前5为初始化str8
string str9(n,'C'); //用n个字符或字符变量初始化str9
4 大小和容量相关的方法
string::size() //求字符串字符数的方法
string::length() //与string::size()等效
string::empty() //用来检测字符数是否为0
string::max_size() //返回string最多能够包含的字符数,与PC环境本身限制有关系
string::capacity() //返回重新分配内存之前,string最多能够包含的字符数
5 比较
//比较
string s1, s2;
s1 == s2; //返回s1和s2是否相等
s1 < "abc"; //返回s1是否小于字符串“abc”
//比较操作符将会将字符依字典顺序逐一比较
s1.compare("astring");
s1.compare(string str);
s1.compare(0, 2, "abcde", 2, 2); //比较s1从下标是0开始长度是2的部分和“abcdef”下标从2开始长度是2的部分
s1.compare(0, 2, "abc", 2); //比较s1从下标是0开始长度是2的部分和“abc”下标从2开始的部分
6 更改内容
//赋值
操作符 = ;
string::assign();
s.assign(aString);
s.assign(aString, 1, 3); //从下标1开始后面三位的部分
s.assign(aString, 2, std::string::npos); //从下标2开始,到字符串最后
s.assign("Hello!"); //
s.assign("nico", 5); //取前5位
s.assign(5, 'x'); //用5个字符赋值
//交换
string.swap();
//置空和删除
std::string s;
s = "";
s.clear();
s.erase();
s.erase(13); //将s下标13以后的字符删除,包括13
s.erase(7,5); //将s下标7后面的的5位清空,包括7
s.pop_back(); //将s的最末位删除
//安插和移除
operator +=;
string::append();
s.append(aString);
s.append(aString, 1, 3);
s.append(aString, 2, std::string::npos);
s.append("Hello!");
s.append("nico", 5);
s.append(5, 'x');
s.push_back('\n');
s.push_back(); //用于在尾部插入单个字符
s.insert(size_type,string); //在索引之前插入字符串
//替换
s.replace(1,2,"abcdef"); //将s的第二位开始后的两个字符用参数的字符串替换
7 子字符串及字符串接合
s.substr(); //返回自身作为字串
s.substr(11); //取s下标11开始作为字串
s.substr(5,6); //取s下标5开始后的6个字符作为字串,包括下标5
s.substr(s.find('c')); //返回从c后面的所有字符作为字串