Skip to content

制作输入输出文件

luosw edited this page Feb 4, 2021 · 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

填写 xxx 中的内容为 inint(3);

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

如果您想要了解 inint 函数的具体使用,请查看下一个标题。

这里需要注意,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; 就是对于每一个输入文件需要执行的操作。下面的一个标题就是关于这个的。

写入 in 文件

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

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

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

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

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

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

ingraph() 可以将一个图写入输入文件,图的创建和随机构造参见图和树 Graph and tree,例如:

graph<int> a;
a=rand_graph(n,m,min,max,cyrand);
ingraph(a);

in() 可以直接将任何类型写进输入文件(CarYon 中已经定义的图除外),仅需类型重载了流插入和流提取运算符<<,>>。

例如:

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

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

注意,这里如果 typename 为空格或换行等流提取运算符无法读入的东西,请使用 instring 函数或者下面的两个函数。

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

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

制作 out 文件

我们已经学会去制造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 中不需要包含任何文件操作。

Clone this wiki locally