C++STL学习笔记_(1)string知识
/*============================================
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知识的更多相关文章
- C++STL学习笔记_(1)vector知识
#include<iostream> using namespace std; #include "vector" //数组元素的 添加和删除 void main31( ...
- C++STL学习笔记_(1)deque双端数组知识
#include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...
- C++STL学习笔记_(2)deque双端数组知识
#include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...
- C++STL学习笔记_(3)stack
10.2.4stack容器 Stack简介 ² stack是堆栈容器,是一种"先进后出"的容器. ² stack是简单地装饰deque容器而成为另外的一种容器. ² #inc ...
- C++STL学习笔记_(4)queue
10.2.5Queue容器 Queue简介 ² queue是队列容器,是一种"先进先出"的容器. ² queue是简单地装饰deque容器而成为另外的一种容器. ² #inc ...
- Effective STL 学习笔记: 多用 vector & string
Effective STL 学习笔记: 多用 vector & string 如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string . 原书作者唯一想到的一 ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- jQuery源代码学习笔记_工具函数_noop/error/now/trim
jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...
随机推荐
- MFC 线程使用
CWinThread* m_pthread; //多线程对象 struct param//参数传递结构体 { int id; TASK t[20]; }; CNB400Dlg::CNB400Dlg( ...
- Logistic回归原理及公式推导[转]
原文见 http://blog.csdn.net/acdreamers/article/details/27365941 Logistic回归为概率型非线性回归模型,是研究二分类观察结果与一些影响因素 ...
- Deleting backup_label on restore will corrupt your database!
The quick summary of this issue is that the backup_label file is an integral part of your database c ...
- ASP.NET 下拉列表绑定枚举类型值,不用再新建一个枚举表
public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArg ...
- python string module
String模块中的常量 >>> import string >>> string.digits ' >>> string.letters 'ab ...
- MySQL物理文件组成
日志文件 错误日志:Error Log 错误日志记录了MySQL运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息.在默认情况下,系统记录错误日志的功能是关闭 ...
- jquery获得图片的真实大小
$(function(){ var imgSrc = $("#image").attr("src"); getImageWidth(imgSrc,functio ...
- Spark RDD类源码阅读
每天进步一点点~开搞~ abstract class RDD[T: ClassTag]( //@transient 注解表示将字段标记为瞬态的 @transient private var _sc: ...
- 用C#开发了四天的UWP应用有感
第一个就是异步方法,async-await,所谓async关键字,并没有什么实际上的语法意义,只是写在函数签名的位置让编译器方便进行查找以及静态检查,并且提醒程序员这是一个异步方法而已.至于await ...
- 学习C++的第一天
# include<iostream> //头文件的使用using namespace std; //命名空间的使用int main(){ int a,b; cin>>a ...