文档章节

C++笔记

CSwuyp
 CSwuyp
发布于 2017/04/04 23:10
字数 722
阅读 11
收藏 0

1 演示友元类

#include<iostream>
using namespace std;
class A
{
friend class B;//声明类B是类A的友元
public:
void Display() { cout << x << endl; };
private:
int x;
};
class B
{
public:
void Set(int i)
{
Aobject.x = i;//使用类A对象Aobject的私有数据成员
}
void Display()
{
Aobject.Display();//调用A类的成员函数
}
private:
A Aobject;//类A对象Aobject是私有数据成员
};
int main()
{
B Bobject;
Bobject.Set(100);
Bobject.Display();
}

显示结果:100

 

文件读写的概述

文件读写涉及三个主要的类,分别是fstreamofstreamifstream。 三个类的功能也比较明显,分别为:

  • fstream : 可读可写的文件操作类
  • ifstream : 从硬盘到内存的文件操作类,即大家常说的从文件读的类
  • ofstream : 从内存到硬盘的文件操作类,即大家常说的写入文件的类

在使用前记得引入头文件#include <fstream> 三个类引入的都是同一个头文件。

文件的打开模式

文件的打开模式将会影响操作文件时的具体方式。比如以 ofstream 类实例化并打开文件,如果指定的文件不存在,便会创建一个新的文件,但如果文件已存在,那么文件将会被打开,但是文件中原有数据将会被舍弃掉,如果我们不希望这么做,我们就需要指定文件的打开模式,下面就简单介绍下几种常用模式:

打开模式 说明
std::ios::app 以追加的方式打开文件
std::ios::ate 文件打开后定位到文件尾,ios:app就包含有此属性
std::ios::binary 以二进制方式打开文件,缺省的方式是文本方式
std::ios::in 文件以输入方式打开(文件数据输入到内存)
std::ios::out 文件以输出方式打开(内存数据输出到文件)
std::ios::nocreate 不建立文件,所以文件不存在时打开失败
std::ios::noreplace 不覆盖文件,所以打开文件时如果文件存在失败
std::ios::trunc 如果文件存在,把文件长度设为0

具体的使用演示代码为:

// 以追加方式打开一个文件
std::ofstream outfile("fileName.txt", std::ios::app);
// 以追加方式打开文件,并且打开后将文件位置定位在末尾
std::ofstream outfile2("fileName2.txt", std::ios::app | std::ios::ate);

操作文件

演示代码

这里以将文本写入文件为伪代码演示:

std::ofstream outfile("fileName.txt", std::ios::app);

if (!outfile) {
    // 这里处理打开文件失败的情况
} else {
    // 这里则是成功打开文件的后续操作
}

我们需要注意一个点就是:打开文件后需要判断文件是否被正确打开。我们这里通过!outfile来判断这个文件是否有成功被打开,如果没有被打开,以后的操作将是未知的,非常危险。

© 著作权归作者所有

CSwuyp
粉丝 1
博文 3
码字总数 2030
作品 0
广州
程序员
私信 提问

暂无文章

JavaConfig版

中心思想:去xml配置文件。 在Spirng Boot和Spring Cloud中,大量使用了注解与JavaConfig。 xml文件 对应的Java类 spring.xml SpringConfig.java spring-mvc.xml SpringMvcConfig.java web.x...

流小文
40分钟前
4
0
Go 定时器内部实现原理剖析

前言 前面我们介绍了一次性定时器Timer和周期性定时器Ticker,这两种定时器内部实现机制相同。创建定时器的协程并不负责计时,而是把任务交给系统协程,系统协程统一处理所有的定时器。 本节...

恋恋美食
45分钟前
0
0
分布式协调神器 ZooKeeper 之整体概述

ZooKeeper 最早起源于雅虎研究院的一个研究小组。当时,雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就...

别打我会飞
46分钟前
1
0
Linux learn(三)

6. Linux文件与目录管理(续上一篇) 查看文件类型 file file 文件名 例如: 文件搜索 which($PATH查询执行档) 结构: which [-a] command 选项参数: -a: 将所有PATH目录中可以找到的指令均列...

lazy~
49分钟前
1
0
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

//二叉搜索树条件左子树<根<右子树 //后序遍历说明最后一个元素是该二叉树的根节点 //1 找到该树的左子树 //2 判断右子树是否都大于根的值 //3 同样操作,该根的左右子树是否成立 public cla...

南桥北木
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部