一、C++ string介绍
C++ string是STL(Standard Template Library)中string类的实现,它是C++中处理字符串的标准库。与char数组相比,string有以下优势:
1、string可以自动扩容,而char数组需要手动分配内存,容易发生内存溢出的问题。
2、string提供了一系列成员函数,比如substr()、find()、replace()等,这些函数可以大大方便我们对字符串的操作。
3、string可以与stringstream结合使用,实现字符串与其他类型之间的转换。
二、C++ string的基本用法
1、声明和初始化
string str1; //默认构造函数,创建一个空的字符串 string str2("hello world"); //使用字符串字面值初始化字符串 string str3(str2); //使用另一个字符串初始化字符串 string str4(10, 'a'); //使用字符和长度初始化字符串,创建"aaaaaaaaaa"的字符串
2、字符串输入输出
string s; cin>> s; //以空格或者换行符为分隔符,输入一段字符串 getline(cin, s); //输入一行字符串 cout<< s <3、字符串截取和查找
string s("hello world"); string s1 = s.substr(0,5); //截取前5个字符,s1="hello" int pos = s.find("world"); //查找第一次出现"world"的位置,pos=6三、C++ string的高级用法
1、正则表达式匹配
C++11引入了
库,可以使用正则表达式对字符串进行匹配和替换。 string s("hello world"); regex r("\\w+"); //定义一个正则表达式,匹配单词 sregex_iterator it(s.begin(), s.end(), r); sregex_iterator end_it; while(it != end_it) { cout<< it->str() <2、字符串和数字之间的转换
通过stringstream,可以将字符串和数字之间相互转换。
int num = 1234; string s; stringstream ss; ss<< num; //将数字转换为字符串 ss>> s; //将字符串转换为数字四、C++ string的性能优化
1、避免频繁创建字符串
由于string可以自动扩容,因此频繁地创建和销毁string对象会导致性能降低。应该尽量避免不必要的string对象的创建和销毁,尽可能重复使用string对象。
//不推荐的写法 string s1 = "hello"; string s2 = "world"; string s = s1 + s2; //每次都会创建新的string对象 //推荐的写法 string s1 = "hello"; string s2 = "world"; s1 += s2; //重复利用s1对象2、使用reserve()预分配内存
由于string的自动扩容可能导致不必要的内存拷贝,可以通过reserve()函数提前预分配好足够的内存,减少内存拷贝的次数。
string s; s.reserve(1000); //提前预分配1000个字符长度的内存空间 for(int i=0; i<1000; ++i) { s += 'a'; //每次只需要改变字符即可,不需要内存重分配 }五、完整C++ string代码示例
#include#include #include #include using namespace std; int main() { //声明和初始化 string str1; //默认构造函数,创建一个空的字符串 string str2("hello world"); //使用字符串字面值初始化字符串 string str3(str2); //使用另一个字符串初始化字符串 string str4(10, 'a'); //使用字符和长度初始化字符串,创建"aaaaaaaaaa"的字符串 //字符串输入输出 string s; cin>> s; //以空格或者换行符为分隔符,输入一段字符串 getline(cin, s); //输入一行字符串 cout<< s < str() < > s; //将字符串转换为数字 return 0; }