Skip to content

制作输入输出文件

luosw edited this page Sep 13, 2020 · 12 revisions

制作输入输出文件

下面的操作都是要包含头文件 caryon.h,注意,在程序的目录文件夹也可以包含头文件经过编译后产生的 caryon.h.gch 文件,来使用数据生成器。一定需要使用命名空间 ca。CarYon 几乎所有的变量,函数,类都在命名空间 ca 中指定

制造 in 文件

打开 test.cpp,看向这个程序段:

makein(1,10){
    csh();
	xxxxx;
}

这个操作是用来生成文件:1.in-10.in的,可以自由更改makein的两个参数进行替换。例如makein(3,5)就是生成3.in-5.in

当我们执行完test.cpp后就会发现根目录多出来了一个文件夹,里面有1.in~10.in的文件,这就是制造的结果。

这里需要注意,csh() 函数不可删去,否则会出现一些未知问题。

下面这个:

dataname="";

这个是填写前缀的,例如下面的程序:

#include"caryon.h"
using namespace std;
using namespace ca;
int main(){
	dataname="chen_zhe-ak-ioi";
	makein(1,10){
		csh();
		xxx;
	}
}

就会在根目录里面的文件夹data-chen_zhe-ak-ioi中生成chen_zhe-ak-ioi1.in~chen_zhe-ak-ioi10.in了。

注意,dataname字段内不可以出现空格!!!

在我们的所有东西搞完后,记得使用

closefile();

函数来释放内存空间。(效果类似于fclose,可以不写)

程序中 xxx; 就是对于每一个输入文件需要执行的操作,如果想要了解,请先阅读 制作随机数 这个 Wiki。您也可以翻到本 Wiki 的最后。

制作 out 文件

请注意,在阅读这一段时请确保您会填写文件中 xxx; 的内容。因此请先阅读 制作随机数 这个 Wiki。您也可以翻到本 Wiki 的最后。

我们已经学会去制造in文件了,怎么创造对应的out文件呢?我们把之前的样例丰富一下:

#include"caryon.h"
using namespace std;
using namespace ca;
int main(){
	dataname="chen_zhe-ak-ioi";
	makein(1,10){
		csh();
		xxx;
	}
    makeout(1,10);
}

此时,在test.cpp所在的目录里面必须有std.exe文件,也就是俗称的标准程序。注意一定是标准程序经过编译后的 std.exe文件,才能制造出对应的out文件。std.cpp 中不需要包含任何文件操作。

写入 in 文件

必须有东西写入每一个in文件才能制作对应的out文件。除非您的std.exe没有输入

下面介绍五个函数能满足此功能。

inint(int);
instring(std::string);
template<class T>in<T>(T);

inint是将一个整型的变量或常量写入每一个输入文件。如果想要随机的,请参阅下一个 Wiki。

instring 是将一个 C++ 字符串写入每一个输入文件,例如空格和换行:

instring(" ");
instring("\n"):

in() 可以直接将任何类型写进输入文件,仅需类型重载了流插入运算符<<。

例如:

long long int a;
in<long long int>(a);

就是把超长整型a写入输入文件。

inendl() 可以在输入文件中打印一个换行符。

inspace() 可以在输入文件中打印一个空格。