-
Notifications
You must be signed in to change notification settings - Fork 18
制作输入输出文件
下面的操作都是要包含头文件 caryon.h
,注意,在程序的目录文件夹也可以包含头文件经过编译后产生的 caryon.h.gch
文件,来使用数据生成器。一定需要使用命名空间 ca
。CarYon 几乎所有的变量,函数,类都在命名空间 ca
中指定。
打开 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文件才能制作对应的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()
可以在输入文件中打印一个空格。
我们已经学会去制造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
中不需要包含任何文件操作。
CarYon is made by luosw, licensed under ISC Lincense.