1

我有一个将多个文件作为输入的程序。我想要做的是使用相同的文件流?尝试使用第二个文件打开流时,我不断收到错误消息。为什么代码无效并在编译时产生错误?argv[2] 是一个 const char*。

错误:不匹配调用 '(std::ifstream) (char*&)'

ifstream fin(argv[1]);
  //work with filestream
fin.close();

fin(argv[2]);
  //work with filestream
fin.close();
4

2 回答 2

5

第一行ifstream fin(argv[1]);是 evokingifstream的构造函数,每个对象只能调用一次构造函数。您的代码正在尝试再次调用它。尝试使用open()代替:

fin.open(argv[2]);

顺便说一句,您可能还想在重新打开ifstream. 这样做的原因是,如果第一个 open()(甚至 close())失败,ifstream则会设置错误位,并且不会被 close() 清除。

于 2012-04-27T18:35:32.290 回答
2

使用本地范围:

{
  ifstream fin(argv[1]);
  //work with filestream
}

{

  ifstream fin(argv[2]);
  //work with filestream
}

请注意,您不需要手动关闭流,当它们超出范围时会自动处理。

于 2012-04-27T18:40:25.537 回答