C++ 基础知识
数组与字符串
-
C++中数组初始化,定义与C一致。 C++11中数组初始化方法: int a[4]{1,2,3,4};(等号可省略)
-
C++中,对字符串而言,任意由空白(回车,空格,制表符)分隔的字符串常量都将自动拼成一个。
-
string类:(可以直接存储字符串,而C语言中str类型需要定义成char c[];才能存储字符串)
-
头文件
#include<string>,命名空间为std,作用:定义字符串。 -
string a="nasnssnnn",b="qqwssdds";------ 未初始化的string对象默认为0。String类可以直接将两字符串相加来达到字符串合并,如:a+b(nasnssnnnqqwssdds),也可以进行直接赋值。 -
获得字符串长度 a.size()------(a为string的一个对象,size()为string类的一个方法)。
-
对于未初始化的字符串,第一个‘\0’出现的位置是随机的,函数strlen()从数组的第一个元素开始计算字节数,直到遇见空字符。
-
C++11字符串初始化:char a[]{“aasjjshx”};(等号可省略)
-
-
原始字符串
-
C++11中新增原始字符串,在原始字符串中,字符表示的就是自己本身,如\n不再表示换行符,而表示斜杠和n,原始字符串可直接使用”,因此原始字符串将“(和)”作为定界符,并使用前缀R来标识原始字符串。
-
例子:
cout<<R"(jim "king" Tutt use \n instead ofendl)"<<endl;
打印结果:jim "king" Tutt use \n instead ofendl
-
指针(new与delete)(动态空间)
-
空间申请:
int *p= new int;空间归还:
delete p;动态数组申请:
int *p=new int[10];释放:
delete []p;
C++中对指针解除引用意味着获得该指针指向的值。
模板类 vector
头文件:#include<vector>
vector类类似于string类,且是一种动态数组(向量),其中空间的申请和释放是自动完成的。
定义:vector<数组中数据的类型>变量名(数组元素个数);
该元素个数可以是变量,也可以是确定的常量。
例子:
#include<vector>
int n=100;
vector<char>value(n); //定义动态数组value
value.push_back(b); //数组尾部插入元素b
value.pop_back(); //删除数组尾部元素
value.front(); //返回value中第一个元素
value.back(); //返回数组value中最后一个元素
value.empty(); //判断数组value是不是为空
value.insert(value.begin()+i,b);
//数组value中第i+1的位置上插入元素b
value.clear(); //清空数组所有元素
value.begin(); //指向数组开头的迭代器
value.end(); //指向数组末尾的迭代器
//末尾:指最后一个元素的下一个位置
C++11中新增类array类(储存在栈中);
头文件:#include<array>
定义:array<数据类型,元素个数(不能是变量)>数组名;
循环:
C++中允许这样做: for(int a=0;a<10;a++)……
逻辑运算符:
&&,||,! 与它们对应的在C++中的另一种表达方式:and,or,not(关键字)
字符函数库cctype
头文件#include<cctype>
常用函数(value为一个字符串):
isalnum(value);是否只有字母或数字
isalpha(value); 是否只有字母
isdigit(value);是否只用数字
isspace(value);是否只有空格
tolower(value);将参数中的大写字符返回其小写字符,
否则返回该参数
toupper(value);与上面相反
C++ 简单的文件读写
文件相关基础:
文件流 头文件#include<fstream>-----(打开文件供读 写);#include<ofstream>-----(向已存在文件中写内容);#include<ifstream>-----(从已存在文件中读取内容);
文件写入类:ofstream 该类中有一个方法:.open(文件名或文件所在路径)
文件写入步骤:
1.包含头文件fstream
2.创建一个ofstream的对象
3.将该对象同一个文件关联起来(对象名.open(文件));
4.就像使用cout那样使用该ofstream的对象
使用完文件后,要关闭文件(对象名.close()) 。C++中,若使用文件后忘记关闭,程序结束时会自动关闭。
文件读出类 ifstream,文件读出步骤与写入类似(像使用cin那样使用ifstream的对象)。
对象名.open(文件名);
if (!对象名.is_open()) //判断文件是否成功打开
{
exit(EXIT_FAILURE);
//exit()函数在cstdlib头文件中定义,该语句是用来终止程序的。
}
文件打开模式:
ios::in 只读
ios::out 只写
ios::app 从文件末尾开始写,防止丢失文件中原来就有的内容
ios::binary 二进制模式
ios::nocreate 打开一个文件时,如果文件不存在,不创建文件
ios::noreplace 打开一个文件时,如果文件不存在,创建 该文件
ios::trunc 打开一个文件,然后清空内容
ios::ate 打开一个文件时,将位置移动到文件尾
例子:
ofstream outfile("文件所在路径", ios::app);
//从文件末尾写入
文件指针位置在c++中的用法:
ios::beg 文件头
ios::end 文件尾
ios::cur 当前位置
例子:
文件对象名.seekg(10,ios::cur);
//让文件指针从当前位置向文件末方向移动10个字节
文件对象名.seekg(-10,ios::cur);
//让文件指针从当前位置向文件开始方向移动10个字节
文件对象名.seekg(0,ios::end);
//让文件指针定位到文件末尾
常用的错误判断方法:
.good() 如果文件打开成功
.bad() 如果打开文件时发生错误
.eof() 如果已经到达文件尾