快好知 kuaihz

C++入门到理解之文件操作(文本文件的读写+二...

原文地址http://www.javayihao.top/detail/168

一:概述

1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存。

2.文件类型有文本文件文件以文本的ASCLL码形式存储在计算机中)和二进制文件文件以文本的二进制形式存储在计算机中,用户一般直接读不懂他们)。

3.C++中对文件操作需要包含头文件,涉及到的三大文件操作类:ofstream写操作类;ifstream读操作类;fstream读写操作类。

二:文本文件读写操作

文件

第1步:包含头文件#include

第2步:创建流对象ofstream ofs

第3步:打开文件ofs.open("文件路径",打开方式)

第4步:写文件ofs<<"写入数据"

第5步:关闭文件ofs.close()

注意:

1.文件打开方式

2.打开方式可以通过|操作符配合使用,如打开二进制写文件 ios::binary|ios:out

3.创建流对象ofstream也可以选择fstream读写类

案例代码

#include

using namespace std;

//第1步

#includeint main() {

//第2步 ofstream ofs;

//第3步 当前同级目录生成test文件

ofs.open("test.txt",ios::app);

//第4步

ofs << "helloword";

//第5步

ofs.close();

}

文件

第1步:包含头文件#include

第2步:创建流对象ifstream ifs

第3步:打开文件ifs.open("文件路径",打开方式)判断是否打开成功,打开方式和上面写文件一样

第4步:读数据

第5步:关闭文件ifs.close()

案例代码

#include

using namespace std;

//第1步

#include

void test() {

//第2步

ifstream ifs;

//第3步

ifs.open("test.txt", ios::in); if (!ifs.is_open()) {

cout << "文件打开失败"; return;

}

//第4步

char buf[1024] = { 0 };

//字符数组初始化为0

while (ifs >> buf) {

//循环全部读完

cout << buf << endl; }

//第5步

ifs.close();}

int main() {

test();}

注意:第4步读数据方式有四种。其他三种如下

//第二种

char buf[1024] = { 0 };

while (ifs.getline(buf,sizeof(buf))){//一行一行读取

cout << buf << endl;

}

//第三种

#include

#include

using namespace std;

//第1步

#includevoid test() {

//第2步

ifstream ifs;

//第3步

ifs.open("test.txt", ios::in);

if (!ifs.is_open()) { cout << "文件打开失败"; return;

}

//第4步

string buf;

while (getline(ifs,buf)){

//使用string中的全局函数getline一行行读取,需要导入string头文件

cout << buf << endl; }

//第5步

ifs.close();}

int main() {

test();}

//第四种

#include

using namespace std;

//第1步

#include

void test() {

//第2步

ifstream ifs;

//第3步

ifs.open("test.txt", ios::in);

if (!ifs.is_open()) {

cout << "文件打开失败"; return;

}

//第4步

char c;

while ((c=ifs.get())!=EOF){//一个一个字符读取、效率不高

cout << c; }

//第5步

ifs.close();}

int main() {

test();}

三:二进制文件读写操作

1.二进制方式对文件操作,打开方式指定为ios::binary,二进制文件不仅可以对内置数据类型的数据操作,还可以对对象类型操作。

2.写入的二进制文件出现乱码不用处理,只要读到的正确即可

文件

#includeusing namespace std;

//第1步 头文件

#include

class person {

public:

char name[54];//涉及到字符串读写,不要使用c++的string,而是用c的char

int age;};

void test() {

//第2步 流对象

ofstream ofs;

//第3步 打开文件

ofs.open("test.txt", ios::out|ios::binary);

//第4步写文件

person p = { "李四",12 };

ofs.write((const char *)&p,sizeof(p));

//第5步关闭

ofs.close();}

int main() {

test();}

文件

#include

using namespace std;

//第1步

#include

class person {

public:

char name[54];

int age;

};

void test() {

//第2步

ifstream ifs;

//第3步

ifs.open("test.txt", ios::in|ios::binary);

if (!ifs.is_open()) {

cout << "文件读取失败"; return; }

//第4步

person p ;

ifs.read((char *)&p,sizeof(p));

cout << p.name << p.age;

//第5步

ifs.close();}

int main() {

test();}

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:C++  C++词条  文件  文件词条  读写  读写词条  入门  入门词条  文本  文本词条  
综合

 利用pxssh暴力破解ssh密码

在前面我们利用Pexpect实现了SSH登录。不过这种方式已经有一个现成的包做好了。它叫Pxssh 首先用一个小例子来感受一下它的用法:from pexpect...(展开)

综合

 学习计算机系统必看的5本书

今天笔者推荐五本学习计算机系统和计算机网络的书籍,如果你是计算机系在校生或者计算机相关工作者,可以参考下。一、深入理解计算机系统(原书第2版)简介:伟大的计算机...(展开)