您的位置:首页 > 编程语言 > C语言/C++

cpp的STL之string

2016-10-28 11:58 477 查看

cpp的STL之string

为什么需要string

1 创建和操作方便
2 不用关心内存分配问题
3 不用考虑内存越界
4 更加丰富的操作


stl string类

stirng的基本操作

复制,连接 ,查找字符,查找子串,截短
使用模板算法实现反转,大小写转换


使用这些常用的基本操作,大致就够了啊,其他的可以采用上面的方法组合起来得出结果

//
//  main.cpp
//  use_stl_string
//
//  Created by bikang on 16/10/28.
//  Copyright (c) 2016年 bikang. All rights reserved.
//

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

void tstring();

int main(int argc, const char * argv[]) {
tstring();
return 0;
}
void tstring(){
cout << "using string" << endl;

//string的初始化的方法
const char *pchar = "hello world";
//根据字符数组创建
string str1(pchar);
cout <<"str1="<<str1 <<endl;
//根据字符数组创建 只取前3位
string str2(pchar,3);
cout <<"str2="<<str2 <<endl;
//根据string创建
string str3(str1);
cout <<"str3="<<str3 <<endl;
//填充创建
string str4(5,'a');
cout <<"str4="<<str4 <<endl;

//访问string的两种方法
//1 根据长度访问
for(size_t i=0;i<str1.length();i++) cout << str1[i] <<",";
cout << endl;
//2 根据迭代器访问
string::const_iterator iter1;
for(iter1=str1.begin();iter1!=str1.end();++iter1){
cout << *iter1 <<",";
}
cout << endl;

//转换成c风格的字符串
const char *cstr1 = str1.c_str();
cout << cstr1 << endl;

//连接
cout<< str1 + " "+ str2 <<endl;

string find_str = str1 + str2;

//查找,字符或者子串
cout << "find_str="<< find_str << endl;
string to_find = "hel";
size_t pos1 = find_str.find(to_find,0);
size_t to_find_len = to_find.length();
while (pos1 != string::npos) {
cout << pos1<<",";
size_t nextPos = pos1+to_find_len;
pos1 = find_str.find(to_find,nextPos);
}
cout << endl;

//截断字符串
//移除给定位置和指定数量的
cout << "find_str="<< find_str << endl;
find_str.erase(1, 3);
cout << "find_str="<< find_str << endl;

size_t pos3 = find_str.find('o');
find_str.erase(pos3,1);
cout << "find_str="<< find_str << endl;

find_str.erase(find_str.begin(),find_str.end());
cout << "find_str_count="<< find_str.length()<<endl;

//反转
reverse(str1.begin(),str1.end());
cout << "str1="<< str1 << endl;

//大小写转换
str2 = "abc";
string str5 = "";
cout << "str2="<< str2<< endl;
transform(str2.begin(), str2.end(), str2.begin(), (int(*)(int))toupper);
cout << "str2="<< str2<< endl;
transform(str2.begin(), str2.end(), str2.begin(), (int(*)(int))tolower);
cout << "str2="<< str2<< endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: