/*============================================
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. Java 报表之JFreeChart(第二讲)

    1.利用 JFreeChart 创建按颜色分类的水果销售报表 package com.wcy.chart.bar; import javax.servlet.http.HttpSession; imp ...

  2. MSP430精准配置高速串口波特率的方法

    引言     在实际项目大批量生产调试设备时,笔者发现同样版本的程序在不同设备上运行时效果不一致,一部分设备串口通信正常,另外一部分串口通信不正常.通过示波器对多个设备的串口波特率及系统时钟频率测试, ...

  3. (转)Markov Chain Monte Carlo

    Nice R Code Punning code better since 2013 RSS Blog Archives Guides Modules About Markov Chain Monte ...

  4. ls

    -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G) -l 除了文件名之外,还将文件 ...

  5. byte与char的区别

     byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char ...

  6. Document types require more than xhtml1.0

    这个东西只会在比较低版本的浏览器中会出现,比如IE7及以下会出这个错误. 错误的根源是html页面没有考虑浏览器兼容性问题. 在页面头部加入下面的内容即可解决标题中的问题 <!DOCTYPE h ...

  7. 揭开Sass和Compass的神秘面纱

    揭开Sass和Compass的神秘面纱 可能之前你像我一样,对Sass和Compass毫无所知,好一点儿的可能知道它们是用来作为CSS预处理的.那么,今天请跟我一起学习下Sass和Compass的一些 ...

  8. decimal,float和double的区别

    http://www.cnblogs.com/yellowapplemylove/archive/2011/08/23/2150316.html 一直很奇怪C#的预定义数据类型中为什么加了一个deci ...

  9. ADF_Data Binding系列1_使用Bean Data Control

    2015-02-16 Created By BaoXinjian

  10. sudo执行脚本找不到环境变量

    sudo执行脚本找不到变量 问题 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能 ...