我是一名新手程序员,对竞争性编程感兴趣。 我最近为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来使用这个函数从文件中获取输入吗?
答案 0 :(得分:1)
std::cin
和std::cout
是引用标准输入和标准输出的流对象。但是,在C ++中,我们还有文件的流类:std::ifstream
和std::ofstream
。它们使用完全相同的>>
和<<
函数。
这些文件流类有一个成员.open()
可以打开一个新文件,只要你关闭了以前的文件。
答案 1 :(得分:0)
你可以使用freopen()。
freopen ("direcotry/to/input/file", "r", stdin); // second argument is opening mode
freopen ("direcotry/to/output/file", "w", stdout);