STL学习笔记-String类

头文件: 
#include<string>

string初始化:
string s1 = "aaa";
string s2("aaa");
string s3 = s1;
string s4(10, 'a');


string遍历:
(1)数组方式
for(int i = 0; i < s1.length(); i++) {
     cout << s1[i] << endl;  //出现错误不会抛异常,引起程序中断
     cout << s1.at(i) << endl; //出现错误会抛异常  
}
(2)迭代器
for( string::iterator it = s1.begin(); it != s1.end(); it++) {
     cout << *it << endl;      
}

char *和string的转换:
// char* -> string
string s1 = "aaaaaaaa";
//string -> char*
printf("s1:%s \n", s1.c_str());
//string -> buffer
char buf[128] = {0};
s1.copy(buf, 3, 0); // 从s1的0号位置拷贝3个字符到buf中,但结尾不会加\0

连接string:
string s1 = "aaaa";
string s2 = "bbbb";
//方法1
s1 = s1 + s2;
//方法2
s1.append(s2);


string查找和替换:
string s1 = "hello i am hi i am hello an am";
int idx = s1.find("am", 0); //从0位置开始查找第一次出现“am”的位置,找不到返回-1

// 查找所有“am”出现的位置
int idx = s1.find("am", 0)
while(idx != s1.npos) {
     cout << idx << " ";
     idx = s1.find("am", idx+1);
}

// 替换:小写换成大写
int idx = s1.find("am", 0)
while(idx != s1.npos) {
     cout << idx << " ";
      s1.replace(idx, 2, "AM"); // 先删除idx开始后面的2个字符,然后在idx处插入“AM”
     idx = s1.find("am", idx+1);
}
cout << s1 <<endl;

string区间删除和插入:
//删除
string::iterator it = find(s1.begin(), s1.end(), 'a');
if(it != s1.end()) {
    s1.erase(it); // 删除it位置的字符
}
 s1.erase(s1.begin(), s1.end()); // 删除一个区间的所有字符

// 插入
s1.insert(0,"AAA"); // 头插法:从0号位置插入字符串
s1.insert(s1.length(), "CCC"); // 尾插法

string与算法相关:
string s1 = "AAAcccc";
//小写换大写
transform(s1.begin(), s1.end(), s1.begin(), toupper); //最后一个参数可以是回调函数的入口地址、
                                                                         //函数对象或者预定义的函数对象
transform(s1.begin(), s1.end(), s1.begin(), tolower); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值