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的更多相关文章

  1. C++ Primer 第三章 标准库类型string运算

    1. 标准库类型 string string表示可变长的字符序列,使用string必须首先包含string头文件.如何初始化类的对象是由类本身决定的. int n; string s1;//默认初始化 ...

  2. 彻底弄清c标准库中string.h里的常用函数用法

    在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...

  3. 谈谈两种标准库类型---string和vector

    两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...

  4. C++ 标准库类型-String,Vector and Bitset

    <C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...

  5. 走进C标准库(8)——"string.h"中函数的实现相关字符串操作函数

    我的strcat: char *strcat(char *dest,char *src) { char * reval = dest; while(*dest) dest++; while(*src) ...

  6. 标准库类型string

    定义和初始化string对象 初始化string对象方式: string s1;//默认初始化,s1是一个字符串 string s2(s1);//s2是s1的副本 string s2 = s1;//等 ...

  7. C++标准库之string类型

    stirng类型 简介: C++标准库提供的类型:string 长度可变的字符串 操作简单  仅为包含个人常用函数 头文件 string 类型与其它的标准库类型相同,都需要包含对应的头文件 #incl ...

  8. 走进C标准库(6)——"string.h"中函数的实现memchr

    我写的memchr: void *memchr(const void *buf, char ch, unsigned count){ unsigned ; while(*(buf++) != ch & ...

  9. C++标准库之string返回值研究

    先说结论(不一定适用所有环境): 1) GCC默认开启了返回值优化(RVO),除非编译时指定“-fno-elide-constructors”: 2) 现代C++编译器一般都支持返回值优化: 3) s ...

随机推荐

  1. Auto Control 001 自动控制的一般概念

    自动控制的基本概念 一 . 自动控制系统的组成 自动控制装置:自动控制装置的组成当中涉及到了这样这样一些东西: 第1,需要有被控对象,那么这些被控对象需要有谁来控制呢?一定要有控制器,这些控制器,我们 ...

  2. JS获得css样式即获得元素的计算样式(《Javascript精粹修订版》书摘)

    为HTML文档中的元素指定样式可以有3种方法:使用内嵌样式.在页面的head中对Style进行声明以及外部 CSS 文件.元素的视觉效果往往是由上述3种方式的结合或者其中某一种方式来确定的,但是内嵌样 ...

  3. Ubuntu 14.04 安装配置强大的星际译王(stardict)词典

    转载http://blog.csdn.net/huyisu/article/details/53437931

  4. Oracle——创建和管理表

    一.常见的数据库对象 对象 描述 表 基本的数据存储集合,由行和列组成 视图 从表中抽出的逻辑上相关的数据集合 序列 提供有规律的数值 索引 提高查询的效率 同以词 给对象起别名 二.Oracle 数 ...

  5. Monkey进行压力测试定位问题分析

    Monkey测试的log分析,我们可以通过几个关键词来判断测试是否通过.   分析log方法一(粗糙一点): 1)Monkey finished打开LOG,查看log的最下端,是否有类似以下字段:## ...

  6. oracle数据库创建表

    实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以了,其他的就好说了.接下来 ...

  7. 申请参加腾讯云自媒体分享计划,送代金券+CN域名

    文章介绍 看到腾讯支持博客了,就尝试下,看看效果如何. 文章属于转载,文末有文章来源,转载注明出处. 活动规则 活动资格:面向腾讯云官网已注册且完成实名认证用户,除协作者之外,其余用户均可参与; 如何 ...

  8. Maven整理笔记の初步窥探

    第一部分:引言 Maven是一款跨平台的项目管理工具,作为Apache组织的一个开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. 项目构建:编译.运行单元测试.生成文档.打包和 ...

  9. delphi让exe开机自启动

    procedure AutoRunOnSystemStart(Title, FileName: String);const  _Software_Microsoft_Windows_CurrentVe ...

  10. docker run hello-world失败

    提示镜像拉取失败,解决方案 到 https://cr.console.aliyun.com/   注册一个账户 列表中就有 加速器 启动  Docker 端  右键  选择配置 在Docker Dae ...