#include <string>
using namespace std;
1, 初始化
string s0;
string s1 ("Initial string");
2,迭代器
Iterators
:
str.begin();
str.end();
string str ("Test string");
for ( std::string::iterator it=str.begin(); it!=str.end(); ++it)
std::cout << *it;
std::cout << '\n';
Output: Test string
3,容量
Capacity
:
str.size() //字符串的长度
str.length() //和size()返回值相同
str.capacity() //当前已经分配的存储空间
str.max_size() //字符串能够达到最大长度
string str ("Test string");
std::cout << "size: " << str.size() << "\n";
std::cout << "length: " << str.length() << "\n";
std::cout << "capacity: " << str.capacity() << "\n";
std::cout << "max_size: " << str.max_size() << "\n";
Output:
size: 11
length: 11
capacity: 15
max_size: 4294967291
str.resize (size_t n); //把字符串的长度置为n,如果n 小于实际长度,则删除大于n 的元素,但是不清空多余的内存,若n 小于实际长度,则以空字符填充
str.resize (size_t n, char c);//n小于实际长度时候以字符c 填充
str.reserve(n); //调整容量Capacity到n 不改变字符串的内容
str.clear(); //清空字符串
str.empty(); //为空返回true,否则返回false
str.shrink_to_fit(); //C++11的新函数,释放多余的Capacity
4,访问元素
Element access
:
str[i]; //返回第i+1个元素
str.at(i); //自动检测位置i 是否越界,越界抛出异常
str.back(); //返回最后一个字符的引用
str.front(); //返回第一个字符的引用
5,修改
Modifiers
:
operator+= //在尾部加上字符串
str.append("here: "); //在字符串尾部添加字符串
str.push_back(c); //在尾部添加一个字符c
str.assign(str1); //用str1的内容替换当前的内容
str.insert(6,str2); //在str第六个字符后面插入str2
str.erase (10,8); //删除部分字符,删除从第10个字符之后的8个字符
str.replace(9,5,str2); //用str2取代第九个字符后面的5个字符
str1.swap (str2); //交换str1与str2的内容
str.pop_back(); //删除最后一个字符
6,字符串操作 String operations:
str.c_str(); //返回一个 C-string指针,指向str的字符内容
str.data(); //和c_str()一样,返回相同的值
str.copy(buffer,6,5); //把str中的第六个及其后面的5个字符复制到字符数组buffer,返回复制个数6
std::size_t found = str.find(str2);
if (found!=std::string::npos)//npos是string 的数据成员,找不到位置的时候就返回npos
std::cout << "first 'str2' found at: " << found << '\n';
str.rfind(key);//返回key字符串最后一次出现的位置
str.find_first_of("aeiou");//找str中第一次出现a,e,i,o,u字符的位置
str.find_last_of("ae");//最后一次出现a,e的位置
str2 = str.substr (3,5);//把str位置3及其后面的4个字符赋值给str2
str1.compare(str2);//str1与str2完全相同时候返回0
7,静态成员常量:string::npos