C++Primer笔记(3)
标准库类型string表示可变长的字符序列,使用前先包含string头文件。(哈哈,终于可以扔掉C语言中的str函数)因为是标准库的一部分,所以string被定义在命名空间std中。所以你懂该怎么做(参见这儿)。
在stl_string_fwd.h中找到如下语句:
typedef basic_string<char> string;
basic_string是一个模板类,在string中有定义。可以看出string是对char类型的一个封装,未对其进行深挖,所以本次笔记只做为string操作手册使用。
初始化string对象的方式:
string s1; //默认初始化,s1为空串
string s2(s1); //s2是s1的副本
string s2 = s1; //等价于上一行
string s3("test"); //s3是字面值"test"的副本,除了最后的空字符外
string s3 = "test"; //等价于上一行
string s4(n, 'c'); //s4被初始化为n个'c'组成的字符串
string s5(cp, n); //s5是cp指向的字符串数组中前n个字符的拷贝。此数组至少应该包含n个字符
string s6(s5, n); //s6是s5从下标n开始的字符的拷贝。若s5.size()<n,则构造函数行为未定义
string s6(s5, n, m); //s6是s5从下标n开始m个字符的拷贝。若s5.size()<n,则构造函数行为未定义。不管m值是多少,构造函数至多拷贝s5.size() - n个字符
string对象上的操作:
os << s 将s写到输入流os当中,返回os
is >> s 从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is, s) 从is中读取一行赋给s,返回is
s.empty() 判断s是否为空,为空返回true,否则返回false
s.size() 返回s中字符的个数
s[n] 返回s中第n个字符的引用,位置n从0开始
s1 + s2 返回s1、s2拼接后的内容
s1 = s2 用s2的副本代替s1中内容
s1 == s2 判断s1、s2是否相等
s1 != s2 是否不相等
<,<=,>,>= 利用字符在字典中的顺序进行比较,从首个字符开始向后依次比较,一有结果立刻返回。
插入
s.insert(pos, args); //在pos之前插入args指定的字符。pos可以是一个下标或者迭代器。接受下标的版本返回一个指向s的引用,接受迭代器的版本返回指向第一个插入字符的迭代器。
删除
s.erase(pos, len); //删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
替换
s.assign(args); //将s中的字符替换为args指定的字符。返回一个指向s的引用
s.replace(n, m, args); //删除从下标n开始m个字符或删除迭代器n和m表示的范围中的字符,替换为args指定的字符。
追加
s.append(args); //将args中的字符追加到s中,返回一个指向s的引用
子字符串操作
s.substr(pos, n); //返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值是0,n的默认值是s.size() - pos,即拷贝从pos开始的所有字符
搜索
s.find(args); //查找s中args第一次出现的位置
s.rfind(args); //查找s中args最后一次出现的位置
s.find_first_of(args); //在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args); //在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args); //在s中查找第一个不在args中的字符
s.find_last_not_of(args); //在s中查找最后一个不在args中的字符
比较
s.compare(s1); //比较string s和s1
s1.compare(pos1, n1, s2); //将s1中从pos1开始的n1个字符与s2进行比较
s1.compare(pos1, n1, s2, pos2, n2); //将s中从pos1开始的n1个字符与s2中从pos2开始的n2个字符串进行比较
s.compare(cp); //比较s和cp指向的以空字符结尾的字符串数组
s1.compare(pos1, n1, cp); //将s1和从pos1开始的n1个字符与cp指向的以空字符结尾的字符串数组比较
s1.compare(pos1, n1, cp, n2); //将s1和从pos1开始的n1个字符与指针cp指向的地址开始的n2个字符进行比较
string和数值之间的转换
to_string(var); //返回数值val的string表示。val可以是任意算术类型 /*返回s的起始子串的数值*/
stoi(s, p, b); //返回int型
stol(s, p, b); //返回long型
stoul(s, p, b); //返回unsigned long型
stoll(s, p, b); //返回long long型
stoull(s, p, b); //返回unsigned long long型
stof(s, p, b); //返回float型
stod(s, p, b); //返回double型
stold(s, p, b); //返回long double型
/*其中p为size_t类型的指针,用来存放第一个非数值字符的下标,默认为0*/
/*b表示进制,默认为10*/
此处应注意在string转数值时,所提供的string中第一个非空白字符必须是数值中可能出现的字符!
C++Primer笔记(3)的更多相关文章
- C++ Primer笔记
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须 ...
- C++ Primer 笔记(1)基础中的战斗机 输入输出 对输入不定数据处理
今天打算再重新好好的看一遍C++ Primer这本很经典的书籍,笔记开始: 1.每个C++程序都包含一个或者多个函数,其中必须有一个main,操作系统通过调用main入手运行程序: 2.函数包括:返回 ...
- C++ Primer 笔记 第一章
C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...
- C++primer笔记之顺序容器
最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间.下面就把这一节的内容做一个简单的 ...
- c++ primer 笔记 (一)
昨天开始看的<C++ Primer>,确实不错.希望这周抓紧看完,每天做下笔记,以便以后复习. main函数返回一个值给操作系统 操作系统通过main函数返回的值来确定程序是否成功执行 ...
- C++ Primer笔记(1)——连续读取数据、类型对应的尺寸、类型转换、字符串分行写法
这次要看看C++ Primer,这本基本上就是必读书籍了.下面的内容就是一些之前没有学过的知识的笔记. 读取数量不定的输入数据 虽然很简单,但是还是记一下: #include <iostream ...
- C++ Primer 笔记 第三章
C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 ...
- C++ Primer 笔记 第二章
C++ Primer 第二章 变量和基本类型 2.1基本内置类型 有算数类型和void类型:算数类型储存空间大小依及其而定. 算数类型表: 类型 含义 最小储存空间 bool 布尔型 - char 字 ...
- C++ Primer 笔记——数组
1.数组的大小是固定不变的,声明时必须指定大小(或者使用列表初始化),而且大小必须大于0,C++ Primer里面也建议,如果不确定元素的个数,请使用vector. ]; , , }; //数组长度固 ...
随机推荐
- PHP+MySQL Smarty简单分页显示示例
一.分页程序的原理 分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page). 有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在m ...
- jQuery 幻灯片 ----摘录
Cloud Carousel (演示 | 下载) ShineTime (演示 | 下载) Nivo Slider (演示 | 下载) Interactive Photo Desk (演示 | 下载) ...
- Android扩展 - 拍照篇(Camera)
1.调用系统摄像头 1.声明常量和变量 2.按钮点击事件,打开系统摄像头 3.重写onActivityResult事件接收拍照返回 4.生成文件名返回路径 5.保存图片 private static ...
- Android获取文件夹路径 /data/data/
首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下.所有内部存储中保存的文件在用户卸载应用的时候会被删除. 一. files1 ...
- linux系统时间和硬件时钟问题(date和hwclock)
http://blog.chinaunix.net/uid-182041-id-3464524.html http://blog.csdn.net/duyiwuer2009/article/detai ...
- cf C. Insertion Sort
http://codeforces.com/contest/362/problem/C #include <cstdio> #include <cstring> #includ ...
- coalesce和nvl函数
coalesce 函数 : Oracle COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,如果 都为空则返 ...
- sqlite3 C API编程
1,创建测试数据库,表;
- (step5.1.6)hdu 1272(小希的迷宫——并查集)
题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环.连通) 解题思路: 1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路. 2)孤立节点:被使用过& ...
- linux文件系统学习
linux系统支持很多种文件系统. 1. 如何确认当前系统挂载了哪些文件系统? 使用mount命令可以查看当前系统上已经挂载了哪些文件系统, sh-# mount rootfs on / type r ...