声明||作用

string类本不是STL的容器,但是它与STL容器有着很多相似的操作,因此,把string放在这里一起进行介绍。 
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下的需要。我们尽可以把它看成是C++的基本数据类型。 
首先,为了在我们的程序中使用string类型,我们必须包含头文件。如下:

#include  <string>  // 注意这里不是string.h,string.h是C字符串头文件

1.定义:

string s1;      默认构造函数,s1为空串
string s2(s1); 将s2初始化为s1的一个副本
string s3("valuee"); 将s3初始化一个字符串面值副本
string s4(n,'c'); 将s4 初始化为字符'c'的n个副本,即重复n次‘c'
cin>>s5; 读取有效字符到遇到空格
getline(cin,s6); 读取字符到遇到换行,空格可读入,知道‘\n’结束(练习在下一个代码中),
getline(cin,s7,'a'); 一个直到‘a’结束,其中任何字符包括'\n'都能够读入

附上代码以便学习

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
s1="i love you";
string s2(s1); //把s2初始化为s1的一个副本,注意写法,不能前面先定义s2的类型后面直接写,也不能定义两次s2
string s3("value"); //将s3初始化一个字符串面值副本
string s4(,'s'); //将s4初始化为字符‘s'的10个副本
/*注意字符串面值与标准库string不是同一个类型*/
cout<<s2<<" "<<s3<<" "<<s4<<endl;
string s5;
while(cin>>s5) //这里可以输入“ hello world ”测试,发现只读取有效字符到遇到空格结束
{
cout<<s5<<endl;
}
return ;
}

2.简单应用:

1.赋值操作符(=)

// 定义空字符串str1
string str1;
// 定义字符串str2
string str2("HelloWorld");
// 将字符串str2赋值给str1
str1 = str2

2.左移操作符(<<)

// 定义字符串str
string str("HelloWorld");
// 输出字符串
cout << str <<endl;

3.右移操作符(>>)

// 定义空字符串
string str;
// 标准输入到字符串str
cin >> str;
// 输出字符串
cout << str << endl;

4.数组下标操作符([])

// 定义字符串str
string str("HelloWorld");
// 获取第5个字符
char c5 = str[];
cout << c5 << endl;
// 将第5个字符改为'A'
str[] = 'A';
cout << str << endl;

5.加法运算符

// 定义空字符串str1
string str1;
// 定义字符串str2
string str2("Hello");
// 将字符串str2和"World"相加并赋值给str1
str1 = str2 + "World";
// 输出str1
cout << str1 << endl;
输出 哈喽我

6.获取字符串的长度

// 定义字符串str
string str("HelloWorld");
// 获取字符串的长度
int len = str.length();
// 输出字符串长度
cout << "len = " << len << endl;

7.判断字符串是否为空

// 定义字符串str
string str("HelloWorld");
// 判断字符串是否为空
bool isEmpty = str.empty();
// 输出
cout << "isEmpty = " << isEmpty << endl;

8.字符串的比较

// 定义字符串str1
string str1("HelloWorld");
// 定义字符串str2
string str2("HelloWorld");
// 比较两个字符串:相等(0),str1>str2(1),str1<str2(-1)
bool result = str1.compare(str2);
// 输出
cout << "result = " << result << endl;

9.字符串的子串

// 定义字符串str
string str("HelloWorld");
// 截取从2位置开始的字符,截取5个
str = str.substr(, );
// 输出str
cout << "substr = " << str << endl;

10.字符串的查找

string str("HelloWorld");
/*
字符串的正向查找
find(char ch,int pos):返回字符ch的实际位置,从pos位置开始往后查找,没有返回-1
find(char * str,int pos):返回字符串str的首字符位置,从pos位置开始往后查找,没有返回-1
*/
int pos1 = str.find('W', );
cout << "字符'W'出现的位置:" << pos1 << endl;
int pos2 = str.find("World", );
cout << "字符串\"World\"出现的位置:" << pos2 << endl;
/*
字符串的反向查找
rfind(char ch,int pos):返回字符ch的实际位置,从pos位置开始往前查找,没有返回-1
rfind(char * str,int pos):返回字符串str的首字符位置,从pos位置开始往前查找,没有返回-1
*/
int pos3 = str.rfind('o', );
cout << "字符'o'出现的位置:" << pos3 << endl;
int pos4 = str.rfind("World", );
cout << "字符\"World\"出现的位置:" << pos4 << endl;

11.字符串的替换

// 定义字符串str
string str("HelloWorld");
// 替换:删除从第2个字符串开始后面的5个字符,然后再插入字符串"Test"
str.replace(, , "Test");
// 输出
cout << str << endl;

12.字符串的删除

// 定义字符串str
string str("HelloWorld");
// 删除字符串的从第2个位置开始的5个字符
str = str.erase(, );
// 输出
cout << str << endl;

13.字符串的插入

// 定义字符串str
string str("HelloWorld");
// 在第2个位置插入字符串"Test"
str.insert(, "Test");
// 在5个位置插入10个字符'A'
str.insert(, , 'A');
// 输出
cout << str << endl;

14

// 定义字空字符串str1
string str1;
// 定义字符串str2
string str2("HelloWorld");
// 将字符串str2的从第5个位置后的5个字符赋值给str1
str1.assign(str2, , );
// 输出
cout << str1 << endl;

.字符串的赋值

关于string 的简单应用的更多相关文章

  1. CF 628C --- Bear and String Distance --- 简单贪心

    CF 628C 题目大意:给定一个长度为n(n < 10^5)的只含小写字母的字符串,以及一个数d,定义字符的dis--dis(ch1, ch2)为两个字符之差, 两个串的dis为各个位置上字符 ...

  2. C++ char数组和string类简单使用总结

    使用char数组,进行字符串的操作,是c风格的操作方式. string是C++的风格,感觉string本质上就是一个vector<char> 以下代码详细展示了字符串的常见操作 #incl ...

  3. Java String的简单介绍

    一.String类的构造方法(先粗略介绍三种 分别是s1,s2,s3) 二.String的常用判断方法 三.String类的常用获取方法 三.Sting的常用转换方法 四.String其他功能   五 ...

  4. String 用法 简单API

    明天天梯赛选拔,怕不是STl忘到姥姥家去了,赶紧复习一下 构造str string s = "fuckyouRMA"; string s1(s, 2); de(s1); strin ...

  5. JAVA里的字符串,String 类简单介绍

    http://www.360doc.com/content/14/1107/23/17130779_423471141.shtml

  6. 扩展方法 1 简单的string扩展方法

    这里是关于 String的简单扩展方法 (静态类 静态方法 this 类型 这里是string) static class Program { static void Main(string[] ar ...

  7. 超简单的处理JSON格式和JSON数组格式的String

    现在网站上有不少处理JSON格式的工具类,但是我找了一天,发现大都是需要编写相应对象类来进行处理,比较麻烦,比如:Gson,json-lib.Gson,json-lib这些处理那些接口之类的参数名字和 ...

  8. 2.0、Hibernate框架的简单搭建

    一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句 ...

  9. C++ 数字转换为string类型

    经常需要循环读入多组序号的图像,需要将int转换为string,简单的函数代码如下: #include <sstream>#include <string> string In ...

随机推荐

  1. linux进程的软中断通信

    linux进程的软中断通信 要求 实现软中断通信的程序 使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上发出的中断信号(即按delete键),当父进程接收到这两个 ...

  2. SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext

    网上查了原因, linux下mysql访问速度缓慢并且ssh连接缓慢的原因 解决办法: 1.linux ssh连接慢 最近发现ssh连接的时候却很慢,ping的速度非常好,让人误以为是ssh连接不上. ...

  3. 业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

    一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息 ...

  4. linux鸟哥的私房菜

    这书还是感觉非常棒,真的是授之以渔而不是授之以鱼.我觉得只需要掌握一个命令就可以了man -k KEYWORD 比如我想查找和防火墙相关的命令,那么 man -k firewall 结果是ufw 然后 ...

  5. Java-马士兵设计模式学习笔记-工厂模式-模拟Spring读取Properties文件

    一.目标:读取properties文件,获得类名来生成对象 二.类 1.Movable.java public interface Movable { void run(); } 2.Car.java ...

  6. Luogu 2322 [HNOI2006]最短母串问题

    唔,太菜了,弄了好几个小时. 状压dp,设$f_{s, i}$表示选了集合$s$,以$i$结尾的最短长度,设$g_{i, j}$表示串$i$的后缀和串$j$的前缀的最长匹配长度. $f_{s, i} ...

  7. latex中的空格

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...

  8. SSH2+proxool 出现No suitable driver found for proxool.mysqlProxool

    SSH2+proxool 出现No suitable driver found for proxool.mysqlProxool 首先我们要明确使用的是SSH2框架,然而Struts2是基于filte ...

  9. 【C#】 创建和调用webapi

    二,,通过普通的路由调用,,路径写到http://localhost:29920/api/Players  即   Api/controller  为止

  10. mysql服务启动不了解决方法

    sudo lsof |grep deleted  找占用大的kill一下,  一般是tomcat log和zookeeper的out比较吃磁盘 du -h --max-depth=1 / 今天作死,想 ...