/*============================================
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. Qt 自定义 滚动条 样式

    今天是时候把软件中的进度条给美化美化了,最初的想法就是仿照QQ. 先前的进度条是这样,默认的总是很难受欢迎的:美化之后的是这样,怎么样?稍微好看一点点了吧,最后告诉你实现这个简单的效果在Qt只需要加几 ...

  2. Apache配置代理服务器的方法(2)

    Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址.在上面两个例子中,*号表示所有地址,即禁止使用代理服务器访问所有地址.而如果想仅禁止某一些地址时,可以参考下面的例子: Order de ...

  3. unity, readOnly varible

    参考:http://answers.unity3d.com/questions/489942/how-to-make-a-readonly-property-in-inspector.html

  4. 在Ext JS 6中添加本地化包

    我在官方论坛发的帖子终于有人恢复了,也终于知道如何添加本地化包了.在Ext JS 6中,Ext JS属于经典工具包,而本地化是包含在经典工具包中,因而在app.json中,要添加本地化包,必须在cla ...

  5. java消息推送与接收

    package com.zl; import java.net.ServerSocket; import java.net.Socket; import org.apache.commons.mvc. ...

  6. VS2010环境下C++工程相关问题汇总

    1.链接其他库调试时产生告警: warning LNK4099: 未找到 PDB“vc100.pdb” 解决方案:属性 -> C/C++ -> 输出文件 -> 程序数据库文件名 -& ...

  7. php命令传参

    1.url方式 $param = array(); if ($argc > 1) { parse_str ( $argv [1], $param ); foreach ( $param as $ ...

  8. Hadoop数据读写原理

    数据流 MapReduce作业(job)是客户端执行的单位:它包括输入数据.MapReduce程序和配置信息.Hadoop把输入数据划分成等长的小数据发送到MapReduce,称之为输入分片.Hado ...

  9. iOS Storyboard全解析

    来源:http://iaiai.iteye.com/blog/1493956 Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果, ...

  10. 创建sa账号

    ①以windows身份验证的方式默认登陆 ②选择安全性下的登录名中的sa账号,右键选择属性,进行相关项的设置 ③将sa账号的状态中对应的登录项由之前的禁用,改为已启用 ④将sa对应的密码进行修改为自己 ...