/*============================================
string是STL的字符串类型,通常用来表示字符串 =
============================================*/
#include <iostream>
using namespace std;
#include "string"//string的头文件
#include "algorithm" /*============================================
string对象的初始化 =
============================================*/
void main21()
{
string s1 = "aaa"; //第一种初始化方法
string s2("bbb"); //第二种初始化的方法
string s3 = s2; //通过拷贝构造函数来初始化对象s3
string s4(,'a'); //用n个字符c初始化 cout<<"s1:"<<s1<<endl;
cout<<"s2:"<<s2<<endl;
cout<<"s3:"<<s3<<endl;
cout<<"s4:"<<s4<<endl; }
/*============================================
string的遍历 =
============================================*/
void main22()
{
string s1 = "abcdefg";
//1.数组方式
for (int i = ;i<s1.length();i++)
{
cout<<s1[i]<<" ";//出现错误不抛异常,引起程序的中断
}
//2.通过迭代器的方式
for (string::iterator it = s1.begin();it != s1.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//3.string的at方式
for (int i = ;i<s1.length();i++)
{
cout<<s1.at(i)<<" ";//可以抛出异常
}
try
{
for (int i = ;i<s1.length() + ;i++)
{
cout<<s1.at(i)<<" "<<endl;//可以抛出异常
}
}
catch (...)
{
cout<<"发生异常"<<endl;
}
} //字符指针和string的转换
void main23()
{
string s1 = "aaa bbb";//char*====>string //s1====>char *
printf("s1:%s\n",s1.c_str()); //char*====>string //s1的内容拷贝到buf中
char buf1[] = {};
s1.copy(buf1,,);//注意,只给你copy3个字符 不会变为C风格的字符串
cout <<"buf1:"<<buf1<<endl;
} //链接字符串
void main24()
{
string s1 = "aaa";
string s2 = "bbb";
s1 = s1 + s2;
cout<<"s1:"<<s1<<endl; string s3 = "";
string s4 = "";
s3.append(s4);
cout<<"s3:"<<s3<<endl;
} //字符串的查找和替换
void main25()
{
string s1 = "wbm hello wbm 111 wbm 222 wbm 333";
//第一次出现wbm的 index
int index = s1.find("wbm",);//位置下标是从0开始的
cout<<"index:"<<index<<endl; //求wbm每次出现的数组下标
int offindex = s1.find("wbm",);
while(offindex != string::npos)
{
cout<<"offindex:"<<offindex<<endl;
offindex = offindex + ;
offindex = s1.find("wbm",offindex);
} //案例2
string s3 = "aaa bbb ccc";
s3.replace(,,"AAA");
cout<<"s3:"<<s3<<endl; offindex = s1.find("wbm",);
while(offindex != string::npos)
{
cout<<"offindex:"<<offindex<<endl;
s1.replace(offindex,,"WBM");
offindex = offindex + ;
offindex = s1.find("wbm",offindex);
}
cout <<"s1:"<<s1<<endl;
} //截断(区间删除)和插入
void main26()
{
string s1 = "hello hello2 hello1";
//string &eras(int pos = 0,int n = pos);删除pos开始的n个字符,返回修改后的字符串
string::iterator it = find(s1.begin(),s1.end(),'l');
if (it != s1.end())
{
s1.erase(it);
}
cout<<"s1删除以后的结果:"<<s1<<endl; s1.erase(s1.begin(),s1.end());
cout<<"s1删除以后的结果:"<<s1<<endl;
cout<<"s1长度:"<<s1.length()<<endl; string s2 = "BBB";
s2.insert(,"AAA"); //头插法
cout<<"s2结果:"<<s2<<endl;
s2.insert(s2.length(),"CCC"); //尾插法
cout<<"s2结果:"<<s2<<endl;
} void main27()
{
string s1 = "AAAbbb";
//1.函数的入口地址 2.函数对象 3.预定的函数
transform(s1.begin(),s1.end(),s1.begin(),toupper); //全部变为大写
cout <<"s1:"<<s1 <<endl; string s2 = "AAAbbb";
transform(s1.begin(),s1.end(),s2.begin(),tolower); //全部变为小写
cout <<"s2:"<< s2 <<endl;
}
int main()
{
//main21();
//main22();
//main23();
//main24();
//main25();
//main26();
main27();
return ;
}

C++STL学习笔记_(1)string知识的更多相关文章

  1. C++STL学习笔记_(1)vector知识

    #include<iostream> using namespace std; #include "vector" //数组元素的 添加和删除 void main31( ...

  2. C++STL学习笔记_(1)deque双端数组知识

    #include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...

  3. C++STL学习笔记_(2)deque双端数组知识

    #include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...

  4. C++STL学习笔记_(3)stack

    10.2.4stack容器 Stack简介 ²  stack是堆栈容器,是一种"先进后出"的容器. ²  stack是简单地装饰deque容器而成为另外的一种容器. ²  #inc ...

  5. C++STL学习笔记_(4)queue

    10.2.5Queue容器 Queue简介 ²  queue是队列容器,是一种"先进先出"的容器. ²  queue是简单地装饰deque容器而成为另外的一种容器. ²  #inc ...

  6. Effective STL 学习笔记: 多用 vector & string

    Effective STL 学习笔记: 多用 vector & string 如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string . 原书作者唯一想到的一 ...

  7. Effective STL 学习笔记 31:排序算法

    Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  8. Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  9. jQuery源代码学习笔记_工具函数_noop/error/now/trim

    jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...

随机推荐

  1. UVA-11107 Life Forms(后缀数组)

    题目大意:给出n个字符串,找出所有最长的在超过一半的字符串中出现的子串. 题目分析:将所有的字符串连成一个,二分枚举长度,每次用O(n)的时间复杂度判断.连接字符串的时候中间添一个没有出现过的字符. ...

  2. Python-Jenkins 查询job是否存在

    def check_jobs_from_jenkins(job_names): if isinstance(job_names, str): job_names = [job_names] job_d ...

  3. 面试题一 链表中倒数第k个结点

    void findLastK(LinkedNode head, int k, int n){ if (head == NULL || k == 0) return; LinkedNode t1 = h ...

  4. MySql数据库索引原理

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  5. Docker之Web-UI

    DockerUI 不支持多主机Command: docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock dock ...

  6. [redis] redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1

    这个异常上网查了很久才知道原因: MOVED indicates that you're using Redis Cluster. ShardedJedis is not for Redis Clus ...

  7. Symfony2创建基于域名的路由(原创翻译)

    你可以匹配将要来到的请求以HTTP域名的方式 YAML方式 mobile_homepage: path: / host: m.example.com defaults: { _controller: ...

  8. HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级

    HA(High available)-Keepalived高可用性集群   Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual ...

  9. BYTE 和字符串转换

    string hanzi = "汉字"; byte[] arr = System.Text.Encoding.UTF8.GetBytes(hanzi); string temp = ...

  10. ajax 开始的loading加载

    注意是异步加载方式 $.ajax({ beforeSend:function(){ $("#showMes").html('loading...'); },  success: f ...