竞争编程中,大多数时候我们需要输入输出手动检查我们的代码。遇到图形,字符串或输入数据的大量输入之类的问题,将会变得很麻烦,因为它肯定会超时或者键入错误数据的机会将会增加。为了简便,我们只需将测试用例保存到指定文件中所需位置的位置,即可轻松摆脱问题。
对于输入/输出,我们基本上使用这两种类型的文件访问模式,即
- “ r”:表示已读,因为它打开文件进行输入操作,但文件必须存在于指定位置。
- “ w”:表示写操作,因为它为输出操作创建了一个空文件。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。
C / C ++
在C / C ++中,我们可以将freopen用于标准输入和输出。该函数的语法为:
FILE * freopen(const char *文件名,const char *模式,FILE * stream);
使用符号常量ONLINE_JUDGE进行调试。在执行我们的代码之前,在命令行末尾添加此标志。例如在C ++ 11中,它将被编译为
-std = c ++ 0x -O2 -static -s -lm -DONLINE_JUDGE
使用C预处理程序指令来利用它。
// Below is C/C++ code for input/output
#include<stdio.h>
int main()
{
#ifndef ONLINE_JUDGE
// For getting input from input.txt file
freopen("input.txt", "r", stdin);
// Printing the Output to output.txt file
freopen("output.txt", "w", stdout);
#endif
return 0;
}
Java
将BufferedReader类用于快速Input,将PrintWriter类用于对输出进行格式化表示,以及FileReader和FileWriter类。
- FileReader(String filename):此构造函数创建一个新的FileReader,并指示解析器从该目录中读取文件。该文件必须存在于该指定位置。
- FileWriter(String fileName):此构造函数创建一个FileWriter对象,该对象位于指定位置。
// Java program For handling Input/Output
import java.io.*;
class Main
{
public static void main(String[] args) throws IOException
{
// BufferedReader Class for Fast buffer Input
BufferedReader br = new BufferedReader(
new FileReader("input.txt"));
// PrintWriter class prints formatted representations
// of objects to a text-output stream.
PrintWriter pw=new PrintWriter(new
BufferedWriter(new FileWriter("output.txt")));
// Your code goes Here
pw.flush();
}
}
// Thanks to Saurabh Kumar Prajapati for providing this java Code
Python
导入模块sys(system),然后使用open()函数返回文件对象,该函数通常与两个参数一起使用:open(filename,mode)。
- 第一个参数是包含文件名的字符串。
- 第二个参数是另一个字符串(模式),包含一些描述文件使用方式的字符。
# Below is Pythone code for input/output
import sys
# For getting input from input.txt file
sys.stdin = open('input.txt', 'r')
# Printing the Output to output.txt file
sys.stdout = open('output.txt', 'w')