1. string 标准库

1.1初始化

string s1; 默认构造函数s1为空
string s2(s1); 将s2初始化为s1的一个副本
string s3(“value”); 将s3初始化为一个字符串字面值副本
string s4(n,’c’); 将s4初始化为字符’c’的n个副本

string对象的赋值:赋值所做的工作:必须先将s1所占的内存释放掉,然后在分配足够的内存,最后将新字符串赋值到s1中;

string对象和字符串字面值的连接:+操作符的左右操作数必须至少一个是string类型的。如果试图将两个字符串的字面值连接起来是不合法的。

string 类型通过下标操作符[] 来访问string对象中的单个字符。

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
isprint(c) 如果c是可打印字符,则为true
ispunct(c) 如果c是标点符号,则为true
isspace(c) 如果c是空白是否,则为true
isupper(c) 如果c是大写字母,则为true
isxdigit(c) 如果c是十六进制的数,则为true
tolower(c) 如果c是大写字母,返回其小写字母的形式,否则直接返回c
toupper(c) 如果c是小写字母,返回其大写字母的形式,否则直接返回c
   

空白字符是:空格、制表符、垂直制表符、回车符、换行符、进制符

标点符号:处数字、字母、可打印的空白符(空格)以外的其他字符。

建议:采用 C 标准库头文件的 C++ 版本

C++ 标准库除了定义了一些选定于 C++ 的设施外,还包括 C 标准库。 C++ 中的头文件 cctype 其实就是利用了 C 标准库函数,这些库函数就
       定义在 C 标准库的 ctype.h 头文件中。

C 标准库头文件命名形式为 name 而 C++ 版本则命名为 cname ,少了 后缀,.h 而在头文件名前加了 c 表示这个头文件源自 C 标准库。因此,
cctype 与 ctype.h 文件的内容是一样的,只是采用了更适合 C++程序 的形式。特别地,cname 头文件中定义的名字都定义在命名空间 std 内,
而 .h 版本中的名字却不是这样。

通常,C++ 程序中应采用 cname 这种头文件的版本,而不采 用 name.h 版本,这样,标准库中的名字在命名空间 std 中保持一致。 使用 .h 版本会给程序员带来负担,因为他们必须记得哪些标准库名字 是从 C 继承来的,而哪些是 C++ 所特有的。

2. 标准库vector类型

vecto是同一种类型的对象集合,每个对象都有一个对应的整数索引值,我们把vector成为容器。

#include <vector>

using std::vector;

vector是一个类模板,使用模板可以编写一个类的定义或函数的定义,而用于多个不同的数据类型。

定义vector<int> ivect

初始化vector  
vector<T> v1 默认构造函数为空
vector<T>v2(v1) v2是v1的一个副本
vector<T>v3(n,i); v3是包含n个值为i的元素
vector<T>v4(n) v4含有值初始化的元素的n个副本

vector对象的重要属性就是可以再运行的时候高效的添加元素。

vector对象的操作:

v.empty() 如果为空,则返回true,否则返回false
v.size() 返回v中元素的个数
v.push_back(t) 在v的末尾增加一个值为t的元素
v[n] 返回v中位置为n的元素
v1=v2 把v1中的元素替换为v2中元素的副本
v1==v2 如果v1和v2相等,则返回true
!=,<,<=,>,>= 条件操作符

vector下标操作不添加元素。进能对已经存在的元素进行下标操作。

3.迭代器:是一种检查容器内元素并遍历元素的数据类型。每种容器类型都定义了自己的迭代器类型,如vector:

vector<int>::iterator iter;

每种容器都有一个begain和end的函数用于返回迭代器,如果容器中有元素的话,有begain返回迭代器指向的第一个元素。由end操作返回迭代器指向vector的“末尾元素的下一个”,如果vector为空,begain返回的迭代器和end返回的迭代器相同。由end操作返回的迭代器并不指向vector中的任何元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已经处理完vector中的所有元素。迭代器的解引用操作符返回返回迭代器所指向的元素。迭代器的自增操作符是把容器中的迭代器向前移动一个位置。迭代器的的操作== 和!=是比较两个迭代器,如果两个迭代器对象指向同一个元素,则他们相同,否则就不相等。

const_interator 每种容器懂定义了一种名为const_interator的类型,该类型只能读取容器内的元素,不能改变其值。他自身的值可以改变,但是其指向的元素的值是不能改变的。

迭代器的算术操作包括:iter+n   iter-n iter1-iter2

cctype头文件中的一些内容的更多相关文章

  1. cctype头文件(字符处理库)的使用

    C++ 中cctype头文件的使用 头文件cctype(字符处理库)中定义了有关字符判断与处理的库函数,使用前要包含头文件: #include <cctype> using namespa ...

  2. c语言头文件中定义全局变量的问题

    c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...

  3. C++-模板的声明和实现为何要放在头文件中

    源: http://blog.csdn.net/lqk1985/archive/2008/10/24/3136364.aspx 如何组织编写模板程序 发表日期: 1/21/2003 12:28:58 ...

  4. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  5. [C++]关于头文件中的防卫式声明

    大家知道,我们写.h文件时,通常会加上防卫式声明,有以下两种方式: 1. 宏定义 1 2 3 4 #ifndef _FILENAME_ #define _FILENAME_ //... #endif ...

  6. (转) [C++]我再也不想在任何头文件中看到using namespace xxx这种句子了(译)

    原文的传送:I don’t want to see another “using namespace xxx;” in a header file ever again 转自  http://blog ...

  7. C ++模板的声明和实现为何要放在头文件中?

    源: http://blog.csdn.net/lqk1985/archive/2008/10/24/3136364.aspx 如何组织编写模板程序 发表日期: 1/21/2003 12:28:58 ...

  8. [C++] 头文件中的#ifndef,#define,#endif以及#pragma用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  9. C语言之在头文件中定义全局变量

    通常情况下,都是在C文件中定义全局变量,在头文件中声明,但是,如果我们定义的全局变量需要被很多的C文件使用的话,那么将全局变量定义在头文件里面会方便很多,那到底是如何实现的? os_var.c文件内容 ...

随机推荐

  1. Linux Command Line 笔记(1)

    Yunduan CUI graphical user interfaces make easy tasks easy, while command line interfaces make diffi ...

  2. SPI

    SPI的通信原理以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,有4根线,单向传输时只要3根线. (1)MOSI(SDO) – 主设备数据输出,从设备数据输入(Master Out Sla ...

  3. Spring使用ThreadLocal技术来处理这些问题

    过去我习惯于从左到右的思考,因为这符合书写的习惯,对于“好”得前端工程师,我们首先可能会去思考什么是好,好的定义和范围,标准和要求?但现在我习惯于从右到左的思考,因为我觉得越是抽象越难以定义,从粒度更 ...

  4. 关于从jsp 中 引用 js 中的里层function

    在需要引用的方法里: 需要引用的方法 function (){ new js中的父方法().子方法(参数) }

  5. 【我是老中医】Win10系统下MATLAB无法正常打开的解决方案

    转眼大四了,要开始做毕设了,导师给的题目要用到他之前做的东西,都是MATLAB做的,所以不太熟悉MATLAB的我也得用这玩意儿了,想想自己目前也就大二的DSS实验和大三的AI实验用过MATLAB,当时 ...

  6. Linux测试环境部署tomcat(二)

    安装配置tomcat 1:在http://tomcat.apache.org/download-80.cgi下载最新安装包 2:安装tomcat 将apache-tomcat-8.0.21.tar.g ...

  7. kbengine0.4.20源代码分析(一)

    基于kbengine 0.4.2 MMOPG服务端是一种高品质的工程项目,品读开源的kbe是一种乐趣.本文档我带童鞋们一起领略一下.囿于我知识面和经验方面所限,文中所述之处难免有错误存在,还请读童鞋们 ...

  8. go语言的命令行库

    命令行应用通常很小,程序猿们也不喜欢为它编写注释.所以一些额外的工作,如解析参数有个合理的库来帮忙做就好了.https://github.com/urfave/cli 这个项目因此而生.安装:go g ...

  9. .NET操作Xml类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...

  10. Maven间接依赖冲突解决办法

    如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突.依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖 如上图,通过Depend ...