C++标准库之String
C++中支持的字符串处理的函数库叫String,但它不是STL,却与STL操作十分相似。
1.声明:
使用String之前要有以下头文件
#include<string>
using namespace std;
声明方法
string s; //声明一个string对象 s
string s[]; //声明一个string对象数组s
初始化string对象
直接初始化:利用小括号完成;
拷贝初始化:利用等号完成拷贝过程(减少使用);
string s1; //定义一个空字符
string s2 = s1; //拷贝初始化,将s1赋值给s2
string s3 = "Hello"; //拷贝初始化,用字符串字面值初始化s3
string s4(,'c'); //直接初始化,s4内容是cccccccccc
string s5(s3); //直接初始化,这是新的初始化方法,等价于s5 = s3
string s6("World"); //直接初始化,这是新的初始化方法,等价于s6 = “World”
以下是运行结果
//
//
//Hello
//cccccccccc
//Hello
//World
输入字符串方法
cin >> s7; // 读取有效字符串直到遇到空格
getline(cin,s8); // 读取字符串直到遇到换行结束,可读入空格
getline(cin,s9,'a') // 读取除了'a'以外的所有字符串,包括'\n'和空格
如果想反复读入字符
string s10;
while(cin >> s10){
//其他操作
}
2.string对象的操作
s.empty(); // 判断是否为空,返回bool型
s.size(),s.length(); // 返回字符串的个数
s[n]; // 字符串第n-1个字符,从0开始计数
s1+s2; // 将s2字符串连接在s1后面
s = s + ''; // 在s字符串后面加个字符0
s = s + 'a' // 在s字符串后面加个字符a
string s2 = s1 + "adc" // s1字符串后加个字符串"abc"赋值给s2
s1 = s2; // 将s2字符串赋值给s1
s1 == s2; // 判断s2字符串和s1字符串是否相等
!=,<,<=,>,>= // 两个字符串的比较
3.string对象中字符的处理(头文件cctype)
isalnum(c); //如果c是字母或者数字,返回true
isalpha(c); //如果c是字母,返回true
iscntrl(c); //如果c是控制字符,返回true
isdigit(c); //如果c是数字,返回true
isgraph(c); //如果c不是空格,可打印,返回true
islower(c); //如果c是小写字母,返回true
isupper(c); //如果c是大写字母,返回true
isprint(c); //如果c是可打印字母,返回true
ispunct(c); //如果c是标点符号,返回true
isspace(c); //如果c是空白字符,返回true
isxdigit(c); //如果c是十六进制数,返回true
tolower(c) ; //如果c是大写字母,返回小写字母
toupper(c); //如果c是小写字母,返回大写字母
4.函数操作
1)assign():
s.assign(base); //将base赋值给s
s.assign(base,,); //将base第10字符已经后9个字符赋值给s
s.assign("you are so beautiful",); //将字符串中前0-6个字符赋值给s
s.assign("you are so beautiful"); //将字符赋值给s
s.assign(,'*'); //将10个*赋值给s
s.assign<int>(,0x2D); //赋值10个-给s
s.assign(base.begin()+,base.end()-); //将base迭代器中指定位置的字符赋给s
2)insert():
string str="to be question";
string str2="the ";
string str3="or not to be";
string::iterator it; // used in the same order as described above:
//从0开始计数
str.insert(,str2); // 将字符串str2插入到str的第六个位置(str[5])
str.insert(,str3,,); // 将str3第3,4,5,6四个字符插入到str第六个位置处
str.insert(,"that is cool",); // 将"that is cool"字符串中前八个字符插入到str第10个位置处
str.insert(,"to be "); // 将"to be "插入到str第10个位置处
str.insert(,,':'); // 插入一个,到str的第15个位置处
it = str.insert(str.begin()+,','); // 将,插入到字符串开头的第五个位置
cout << *it << endl; //it指向的是,
str.insert (str.end(),,'.'); // 在字符串末尾插入3个.
str.insert (it+,str3.begin(),str3.begin()+); //将str3前3个字符插入到,后面的第2个位置
3)find(): //字符串查找,若存在返回下标。
4)replace(): //替换字符
5)erase(): //删除字符
6)append(),+=,push_back(): //在尾部添加字符
7)compare(),==,!=,<,<=,>,>=: //字符串的比较
8)reverse(): //保留一定量内存以容纳一定数量的字符
9)substr(): //返回某个字符串a)
10) swap() //交换两个字符串的内容
11) clear() //删除全部字符
12) + //串联字符串
13) size(),length() //返回字符数量
14) max_size() //返回字符的可能最大个数
15) empty() //判断字符串是否为空
16) capacity() //返回重新分配之前的字符容量
17) [ ], at() //存取单一字符
18) >>,getline() //从stream读取某值
19) << //将值写入stream
20) copy() //将某值赋值为一个C_string
21) c_str() //将内容以C_string返回
22) data() //将内容以字符数组形式返回
23) substr() //返回某个子字符串
24)begin() end() //提供类似STL的迭代器支持
25) rbegin() rend() //逆向迭代器
26) get_allocator() //返回配置器
(未完待续)(以后需要什么再查官方文档)
http://www.cplusplus.com/reference/string/string/
C++标准库之String的更多相关文章
- C++ Primer 第三章 标准库类型string运算
1. 标准库类型 string string表示可变长的字符序列,使用string必须首先包含string头文件.如何初始化类的对象是由类本身决定的. int n; string s1;//默认初始化 ...
- 彻底弄清c标准库中string.h里的常用函数用法
在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...
- 谈谈两种标准库类型---string和vector
两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...
- C++ 标准库类型-String,Vector and Bitset
<C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...
- 走进C标准库(8)——"string.h"中函数的实现相关字符串操作函数
我的strcat: char *strcat(char *dest,char *src) { char * reval = dest; while(*dest) dest++; while(*src) ...
- 标准库类型string
定义和初始化string对象 初始化string对象方式: string s1;//默认初始化,s1是一个字符串 string s2(s1);//s2是s1的副本 string s2 = s1;//等 ...
- C++标准库之string类型
stirng类型 简介: C++标准库提供的类型:string 长度可变的字符串 操作简单 仅为包含个人常用函数 头文件 string 类型与其它的标准库类型相同,都需要包含对应的头文件 #incl ...
- 走进C标准库(6)——"string.h"中函数的实现memchr
我写的memchr: void *memchr(const void *buf, char ch, unsigned count){ unsigned ; while(*(buf++) != ch & ...
- C++标准库之string返回值研究
先说结论(不一定适用所有环境): 1) GCC默认开启了返回值优化(RVO),除非编译时指定“-fno-elide-constructors”: 2) 现代C++编译器一般都支持返回值优化: 3) s ...
随机推荐
- npm 升级
当我们运行某个项目是 会提示 > my-first-vue-project@1.0.0 dev C:\Users\ASUS\my-project > node build/dev-serv ...
- Part3_lesson4---协处理器访问指令
1.什么是协处理器? CP15是协处理器, CP15的作用:系统控制协处理器CP15,它提供了额外的寄存器,这些寄存器用于配置和控制cache,MMU,保护系统,时钟模式,和其他的系统项,比如大小端操 ...
- URAL 1355. Bald Spot Revisited(数论)
题目链接 题意 : 一个学生梦到自己在一条有很多酒吧的街上散步.他可以在每个酒吧喝一杯酒.所有的酒吧有一个正整数编号,这个人可以从n号酒吧走到编号能整除n的酒吧.现在他要从a号酒吧走到b号,请问最多能 ...
- WC 代码统计 java
GitHub地址 项目需求 实现一个wc统计程序,可以对文本进行相关功能的统计与分析 基本功能 -c 统计字符数 -w 统计文件词数 -l 统计行数 扩展功能 -s 递归搜索目录下面的文件 -a 返回 ...
- Java集合类总结 (五)
集合框架 为了避免进行不必要的随机访问操作,Java引入了一种标签接口RandomAccess, 这个接口没有任何方法,只是一个标签,用来标记一个集合是否应该进行随机访问操作: if (c insta ...
- 解决dragsort鼠标拖动与onclick事件共存
- [转]B+Tree图解
一, M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2): 图1.1 3阶B+树 (1)根结点只有1个,分支数量范围[2,m]. (2)除根以外的非叶子结点,每个结点包含分支数 ...
- VM12安装Mac系统操作指南
1.第一步,操作按照这个链接来搞 VMware 12安装Mac OS 系统使用的是 OS X 10.11.1(15B42) 2.激活工具一定要使用 unlocker208 3.初次安装可能存在的报错 ...
- Guideline 2.1 - Information Needed需要补充录制视频
1.被拒回文 Guideline 2.1 - Information Needed We have started the review of your app, but we are not abl ...
- Launch VINS example (Euroc dataset) in RTAB-MAP
$ roslaunch rtabmap_ros euroc_datasets.launch args:="-d RGBD/CreateOccupancyGrid false Odom/Str ...