0

我有这个代码:

static std :: ifstream s_inF(argv[j]);
std :: cin.rdbuf(s_inF.rdbuf());

如何确保它正确打开文件并且没有问题?

我的意思是我想写一些类似的东西:

static std :: ifstream s_inF(argv[j]);
std :: cin.rdbuf(s_inF.rdbuf());
if(.....)
{
  cout << "can not open the file" << endl;
  return 0;
}
...
.....
....
cin.close();

有什么建议吗?

4

2 回答 2

2

如果流已准备好进行 I/O 操作,则所有作为子类的对象std::basic_ios(例如s_inFstd::cin,在您的情况下)都有返回 true 。operator bool

这意味着您可以简单地直接测试它们,例如:

static std::ifstream s_inF(argv[j]);
std::cin.rdbuf(s_inF.rdbuf());
if (!s_inF)
{
  cout << "can not open the file" << endl;
  return 0;
}
// ...
cin.close();
于 2013-01-03T00:15:01.820 回答
0

你可以用is_open这个。看这里:

http://www.cplusplus.com/reference/fstream/ifstream/is_open/

于 2013-01-02T23:57:05.093 回答