您的位置:首页 > 其它

STL学习笔记-String类

2015-10-21 22:26 239 查看
头文件: 
#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); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息