C++堆上指针new/delete,文件的读写----C++基础(第二期)

本文介绍了C++的基础知识,包括数组和字符串的初始化与操作,C++11中的原始字符串、指针与动态内存管理,以及模板类vector和array的使用。此外,还详细讲解了C++的文件操作,如ifstream、ofstream和iostream的用法,以及错误检查方法。
摘要由CSDN通过智能技术生成

C++ 基础知识

数组与字符串

  • C++中数组初始化,定义与C一致。
    C++11中数组初始化方法: int a[4]{1,2,3,4};(等号可省略)

  • C++中,对字符串而言,任意由空白(回车,空格,制表符)分隔的字符串常量都将自动拼成一个。

  • string类:(可以直接存储字符串,而C语言中str类型需要定义成char c[];才能存储字符串)

    1. 头文件#include<string>,命名空间为std,作用:定义字符串。

    2. string a="nasnssnnn",b="qqwssdds";------
      未初始化的string对象默认为0。String类可以直接将两字符串相加来达到字符串合并,如:a+b(nasnssnnnqqwssdds),也可以进行直接赋值。

    3. 获得字符串长度 a.size()------(a为string的一个对象,size()为string类的一个方法)。

    4. 对于未初始化的字符串,第一个‘\0’出现的位置是随机的,函数strlen()从数组的第一个元素开始计算字节数,直到遇见空字符。

    5. C++11字符串初始化:char a[]{“aasjjshx”};(等号可省略)

  • 原始字符串

    1. C++11中新增原始字符串,在原始字符串中,字符表示的就是自己本身,如\n不再表示换行符,而表示斜杠和n,原始字符串可直接使用”,因此原始字符串将“(和)”作为定界符,并使用前缀R来标识原始字符串。

    2. 例子:

      cout<<R"(jim “king” Tutt use \n instead ofendl)"<<endl;

      打印结果:jim “king” Tutt use \n instead ofendl

指针(new与delete)(动态空间)

  1. 空间申请: 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()   如果已经到达文件尾
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freejackman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值