0

我是一名新手程序员,对竞争性编程很感兴趣。我最近为 COCI 问题做了一个评分器。在此代码的一个函数中,我使用循环从输入文件中获取输入。它的文件打开部分如下所示 -

int next(int id)
{

    // [[OPEN FILES]] -----------------------

    string name1 = probid+".in." + itoa(id);
    string name2 = probid + "OUTPUT" +".out." + itoa(id);

    FILE *fp1 = fopen(name1.c_str(), "r");   
    if(!fp1) return 0;                            // no file left?
    FILE *fp2 = fopen(name2.c_str(), "w");        

    // process data
}

“id”更改并打开输入文件并将结果写入输出文件。主要问题是我必须使用 (fscanf) 读取数据,但我想使用 cin、cout 获取输入。(免费提供的东西)

但是当我使用 freopen 运行循环时,它无法从多个文件中读取输入。所以我必须使用 fopen()。

无论如何我可以使用 cin, cout 从使用此功能的文件中获取输入吗?

4

2 回答 2

1

std::cin并且std::cout是引用标准输入和标准输出的流对象。但是,在 C++ 中,我们也有文件流类:std::ifstreamstd::ofstream. 它们使用完全相同的>><<功能。

这些文件流类有一个.open()可以打开新文件的成员,前提是您已经关闭了前一个文件。

于 2013-10-03T11:32:12.530 回答
0

你可以使用freopen()。

freopen ("direcotry/to/input/file", "r", stdin); // second argument is opening mode

freopen ("direcotry/to/output/file", "w", stdout);

于 2013-10-03T08:59:22.313 回答