本文主要记录c++中string类的常用的方法。
一、string的初始化
#include <iostream> #include <string> using namespace std; int main() { //初始化 string str1;//,调用默认构造函数,初始化成空字符串 str1 = "test string"; cout << "str1=" << str1 << endl; string str2(str1);//拷贝构造函数,利用str1来初始化str2 cout << "str2=" << str2 << endl; string str3(str1,5);//将字符串str1,从0开始第n个字符开始至结束的内容初始化成str3 cout << "str3=" << str3 << endl; string str4(str1, 5, 2);//将字符串str1从第5个开始截取2个字节内容初始化成str4 cout << "str4=" << str4 << endl; string str5("hello");//将c语言字符串初始化成str5 cout << "str5=" << str5 << endl; string str6("hello",2);//将c语言字符串前2个字节初始化成str6 cout << "str6=" << str6 << endl; string str7(10,‘a‘);//初始化一个字符串,内容是10个字符a cout << "str7=" << str7 << endl; }
输出:
str1=test string
str2=test string
str3=string
str4=st
str5=hello
str6=he
str7=aaaaaaaaaa
二、常用的方法实验
#include <iostream> #include <string> using namespace std; int main() { //初始化 //string str1;//,调用默认构造函数,初始化成空字符串 //str1 = "test string"; //cout << "str1=" << str1 << endl; //string str2(str1);//拷贝构造函数,利用str1来初始化str2 //cout << "str2=" << str2 << endl; //string str3(str1,5);//将字符串str1,从0开始第n个字符开始至结束的内容初始化成str3 //cout << "str3=" << str3 << endl; //string str4(str1, 5, 2);//将字符串str1从第5个开始截取2个字节内容初始化成str4 //cout << "str4=" << str4 << endl; //string str5("hello");//将c语言字符串初始化成str5 //cout << "str5=" << str5 << endl; //string str6("hello",2);//将c语言字符串前2个字节初始化成str6 //cout << "str6=" << str6 << endl; //string str7(10,‘a‘);//初始化一个字符串,内容是10个字符a //cout << "str7=" << str7 << endl; //常用操作 //1.获取字符串的长度,可以使用size()和length()函数求字符串的长度 string s1 = "test string"; cout << "s1的长度为:" << s1.length() << endl; //输出:s1的长度为:11 cout << "s1的长度为:" << s1.size() << endl; //输出:s1的长度为:11 //2.字符串的拼接、重载加法运算符 string s2 = "test "; string s3 = "string"; string s4 = s2 + s3; cout << "s2=" << s2 << endl; cout << "s3=" << s3 << endl; cout << "s2+s3=" << s4 << endl; //输出:s2 = test //输出:s3 = string //输出:s2 + s3 = test string //3.字符串的比较 重载 == != < > string s5 = "test"; string s6 = "test string"; string s7 = "test"; if (s5 == s7) { cout << "s5 == s7" << endl; } if (s5 != s6) { cout << "s5 != s6" << endl; } if (s5 < s6) { cout << "s5 < s6" << endl; } if (s6 > s5) { cout << "s6 > s5" << endl; } //输出: //s5 == s7 //s5 != s6 //s5 < s6 //s6 > s5 //4.获取字符串头部字符和尾部字符 begin()方法和end()方法,返回的是一个迭代器 //begin()方法返回的是一个指向string头部字符的迭代器。 //end()方法返回的是一个指向string尾部字符的末端,指向的是一个空元素 string s8 = "test string"; string::const_iterator iter1 = s8.begin();//定义一个迭代器接收begin()方法的返回值 string::const_iterator iter2 = s8.end();//定义一个迭代器接收end()方法的返回值 cout << *iter1 << endl; cout << *(--iter2) << endl;//iter2指向最后一个字符下一个位置,因此--iter2得到最后一个字符 //输出: //t //g //5.字符串倒置 reverse() string s9 = "test string"; cout << s9 << endl; reverse(s9.begin(),s9.end()); cout << s9 << endl; //输出: //test string //gnirts tset //6.兼容c字符串的函数c_str(),data(),以数组形式返回string内容 string s10 = "test string"; const char *ptr = s10.c_str(); //char *ptr1 = s10.c_str();报错,因为c_str()返回的是const char *类型的 cout << "ptr=" << ptr << endl; cout << "s10-length:"<<s10.length() << endl; cout << "ptr-length:"<<strlen(ptr) << endl; //输出: //ptr=test string //s10 - length:11 //ptr - length : 11 //如果想要用char*的方式接收,可以进行拷贝的方式 char ptr2[64] = { 0 }; strncpy_s(ptr2, s10.c_str(), s10.length()); cout << "ptr2=" << ptr2 << endl; //输出: //ptr2=test string const char *ptr3 = data(s10); cout << "ptr3=" << ptr3 << endl; //输出: //ptr3=test string //7.子串匹配 cout << "子串匹配:" << endl; string s11 = "test string"; cout << s11.find(‘e‘) << endl;//从头开始查找字符‘e‘,找到一个后直接返回下标 cout << s11.find(‘t‘, 5) << endl;//从下表5开始,查按照字符‘t‘,找到返回下表。 cout << s11.find(‘o‘, 5) << endl;//如果不存在,返回4294967295 (-1) //输出: //1 //6 //4294967295 cout << s11.find("est") << endl; cout << s11.find("string") << endl;//子串查找 //输出 //1 //5 cout << "从后往前匹配" << endl;//从最后往前找 cout << s11.rfind(‘tr‘) << endl;//从后往前找,10是指定下标 cout << s11.rfind(‘tr‘, 10);//从后往前找,10是指定下标 //输出 //7 //7 }
原文:https://www.cnblogs.com/cycit/p/13608463.html