📜  来自C / C ++, Java和Python的外部文件的输入/输出,用于竞争性编程

📅  最后修改于: 2021-06-26 09:10:49             🧑  作者: Mango

在竞争编程中,大多数时候我们需要输入输入来手动检查我们的代码。但是,如果我们遇到诸如图形,字符串或输入数据的大量输入之类的问题,将变得很麻烦,因为它肯定会超时,或者键入错误数据的机会将会增加。

通过简单地将测试用例保存到指定文件中所需位置的简单位置,我们可以轻松解决问题。这些在Facebook HackercupGoogle Codejam等比赛中很有用。这些竞赛没有提供像在线裁判那样的环境,而是要求您上传输入和输出文件。

对于输入/输出,我们基本上使用这两种类型的文件访问模式,即

  • “ r”:表示已读,因为它打开文件进行输入操作,但该文件必须存在于指定位置。
  • “ w”:表示写操作,因为它为输出操作创建了一个空文件。如果已经存在同名文件,则其内容将被丢弃,并且该文件将被视为新的空文件。

C / C++

在C / C++中,我们可以将freopen用于标准输入和输出。该函数的语法为:-

FILE * freopen(const char * filename, const char * mode, FILE * stream );
  • 文件名:它是指我们要打开的文件的名称。
  • 模式:以上讨论。
  • stream:指向FILE对象的指针,该对象标识要重新打开的流。

我们也可以使用符号常量ONLINE_JUDGE进行调试。由于大多数在线法官都在执行我们的代码之前,在命令行末尾添加此标志。例如在C++ 11中,它将被编译为

-std = c++0x -O2 -static -s -lm -DONLINE_JUDGE

因此,我们可以通过使用C预处理程序指令来利用这一点。

// Below is C/C++ code for input/output
#include
  
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

在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

在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')

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。