c++ - 打开多个文件,替代 fopen()

标签 c++ stream fopen freopen

我是一名新手程序员,对竞争性编程很感兴趣。 我最近为 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 提供的东西)

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

无论如何我可以使用 cin、cout 来使用这个函数从文件中获取输入吗?

最佳答案

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

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

关于c++ - 打开多个文件,替代 fopen(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154877/

相关文章:

JavaFX 重定向 System.out 流 TextArea,仅在不用作具有固定 ID 的 FXML 组件时才工作。为什么?

c - 在C中的另一个目录中打开文件

c - 如何将文件中的值包含到代码中

c++ - 直接将通过函数传递的 const char* 文本转换为字符 vector

c++ - 读取 UTF-8 文件

java - Maven 构建后无法打开 PDF

c# - 如何将 MemoryStream 写入 byte[]

c - 输入int到文件方向

c++ - Qt中用于线程间通信的类设计

c++ - 在 QTableWidget 中包装标题