快捷搜索:  汽车  科技

c程序详细讲解(C实现文件和流面向对象编程学习由此开始)

c程序详细讲解(C实现文件和流面向对象编程学习由此开始)//C 文件输入和输出流 #include <iostream> #include <fstream> using namespace std;//使用std命名空间 void test() { ifstream test;//输入文件流 string data; test.open("test.txt" ios::in);//只是打开了文件,但并未读取数据 test >> data; cout << data << endl; test.close();//关闭文件 } int main() { test(); }这里先留下一个疑问,当然这也是我之后需要解决的问题,就是如果我们只知道后缀名,如何查找到所有该后缀名的文件呢,也就是需要查找所有包含该后缀名的

本来应该讲一下三大特性中的封装,但想了想,现在实习要做点项目,改一改TensorRT部分的代码,所以关于封装这个特性暂时先放一放,得快速提升自己的C 编程能力才行,等这几节讲过去之后,我就要开始回顾数据结构方面的知识了。

这两天在学TensorRT的C API部分时,我找到了关于读取onnx文件的代码,发现是用到了文件读取流和向文件写入流这两个概念。

c程序详细讲解(C实现文件和流面向对象编程学习由此开始)(1)

如图所示,C 的文件流主要有三种,分别是ofstream(输出文件流)、ifstream(输入文件流)和fstream(文件流)。

但我还遇到stringstream这一类的输入输出流,所以去网上查阅了相关资料,发现这是<sstream>中定义的三个类,与文件输入流和输出流类似,分别是istringstream、ostringstream和stringstream,和普通的输入输出文件流最大的差别就在于,它应该主要是面对字符串的。

当然这只是我个人从字面意思上来进行理解的,具体如何,我也不是很清楚,需要之后再提。

输入文件流:ifstream

输入文件流,顾名思义,就是把文件中的内容给打印出来,当然,我讨论输入文件流的目的主要有两个,分别是读取文件中的内容,以及读取该文件的文件名。

1、ifstream作为一种数据类型,自然是可以来定义的。

2、我们平时会遇到<<和>>这两个运算符号,<<表示流插入运算符,>>表示流提取运算符,<<主要作用就是把信息给输出到屏幕上,而>>主要作用就是写入信息。

//C 文件输入和输出流 #include <iostream> #include <fstream> using namespace std;//使用std命名空间 void test() { ifstream test;//输入文件流 string data; test.open("test.txt" ios::in);//只是打开了文件,但并未读取数据 test >> data; cout << data << endl; test.close();//关闭文件 } int main() { test(); }

c程序详细讲解(C实现文件和流面向对象编程学习由此开始)(2)

这里先留下一个疑问,当然这也是我之后需要解决的问题,就是如果我们只知道后缀名,如何查找到所有该后缀名的文件呢,也就是需要查找所有包含该后缀名的文件,还是比较难的,大家如果有思路的话可以在评论区提一下。

输出文件流

讲了输入文件流之后,那如何把内容给写进文件中去呢,此时我们就需要用到输出文件流的定义概念了。

//C 文件输入和输出流 #include <iostream> #include <fstream> using namespace std;//使用std命名空间 void test() { ofstream test;//输出文件流 int data = 12; test.open("test.txt" ios::out);//只是打开了文件,但并未进行写入操作 test << data << endl; test.close();//关闭文件 } int main() { test(); }

与输入文件流类似,差别就在于ofstream,以及ios::out,还有的话,我们需要把data的内容给输入当该test文件当中去。

c程序详细讲解(C实现文件和流面向对象编程学习由此开始)(3)

可以发现,此时test中的内容从原来的123改成了12,当然,今天讨论的只是基础ofstream和ifstream的用法,暂时先不讨论如何在原本已有的数据下一行添加数据了。

总结

至于fstream,因为该表示文件流,它同时具有以上两个功能,用法与上述两者相似,当然,这个内容主要还是以基础为主,只是实现了文件读取和文件写入这两个简单的步骤,至于麻烦的部分,我会后面再与大家提到。

猜您喜欢: