zoukankan      html  css  js  c++  java
  • [干货]文件输入输出实例&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的功能当中,一个比较难实现的就是删除操作的实时显示,本来是可以利用大量代码实现的,但是利用文件操作也可以实现。
    我们只需要对删除的内容做好标记,然后将未删除内容导出,最后重新导入显示,相当于重新加载了文档。但也是由于删除操作的实现原理原因,我们无法不保存某一个删除操作。

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

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

  • 相关阅读:
    Analysis Services features supported by SQL Server editions
    Azure DevOps to Azure AppServices
    Power BI For Competition
    Win10开机“提示语音”以及”随机播放音乐”
    Azure DevOps
    Allow Only Ajax Requests For An Action In ASP.NET Core
    Mobile CI/CD 101
    Configure SSL for SharePoint 2013
    AWS Step Function Serverless Applications
    Cordova Upload Images using File Transfer Plugin and .Net core WebAPI
  • 原文地址:https://www.cnblogs.com/ahann/p/12643978.html
Copyright © 2011-2022 走看看