• [干货]文件输入输出实例&Ptask的编写


    前言

    最近在写Ptask,顺便了解了如何进行文件读入输出。而在Ptask中最重要,也是最最容易出bug的地方就是文件操作。那么如何进行文件输入输出,在程序中起到重要作用呢?

    输入

    首先为了保证可以在控制台和文件中都可以进行输入输出,我们不用freopen(据说开启文件读入后就切换不回来了)然后就只能用头文件<fstream>中的ifstreamofstream了。

    首先我们需要利用ifstream 名字去开启一个输入的文件流。比如

    ifstream in;
    in.open("in.txt");
    in >> a;
    

    在这个实例中我们用in打开了in.txt这个文档,目前是只读文档,然后在里面读了一个a。
    整数的话没有尝试,但是字符串一般是读一行。

    为什么是只读文档呢?
    因为我们只开启了一个读入的文件流,经尝试过后我发现,无法同时开启读入和输出两个流。否则会乱码。(不一定正确,如有错误请纠正)

    然后读完过后就用in.close()操作关掉这个输入流。

    输出

    输出和输入道理类似,只是用ofstream罢了。

    实例

    那么我们来直接看看一个实例,以下是Ptask的部分源码(内容有所改变)。

    void end()
    {
    	ofstream out;
    	out.open(txtname);
    	n = 0;
    	for(int i = 1; i <= 100; i++)
    	{
    		if(strlen(name[i]) == 0)
    			continue;
    		if(del[i] == 1)
    			continue;
    		n++;
    	}
    	out<<n<<endl;
    	out<<themer<<endl;
    	out.close();
    }
    

    我们看到,open中文件名是可以用字符串代替的,而且为了方便读入,我在每一项信息过后都换行符。

    Ptask的功能当中,一个比较难实现的就是删除操作的实时显示,本来是可以利用大量代码实现的,但是利用文件操作也可以实现。
    我们只需要对删除的内容做好标记,然后将未删除内容导出,最后重新导入显示,相当于重新加载了文档。但也是由于删除操作的实现原理原因,我们无法不保存某一个删除操作。

    由于代码已经写好了,如果要改那么这个工程量可是难以想象的,毕竟后面的工能都有依赖于文件操作。我一个人改,哎,弄不来。

    在最后的最后如果你认为这里的内容对你有所帮助,那么在右下角点个关注或者点个推荐或者把这篇文章分享出去,然后,没了。

  • 相关阅读:
    何为 ISAPI
    MacDown-The open source Markdown editor for OS X.
    Atom使用
    运维
    Perl
    Kaggle
    J2EE
    leetcode
    Tensorflow 学习笔记
    EXCEL公式及宏
  • 原文地址:https://www.cnblogs.com/ahann/p/12643978.html
Copyright © 2020-2023  润新知