C++ 如何确保cin正确打开文件?

C++ 如何确保cin正确打开文件?,c++,cout,cin,istream,C++,Cout,Cin,Istream,我有以下代码: 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" << en

我有以下代码:

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();
static std::ifstreams_inF(argv[j]);
标准::cin.rdbuf(s_inF.rdbuf());
如果(…)
{

cout您可以使用
is\u open
进行此操作。请参见此处:


在您的例子中,所有属于的子类对象(如
s\u inF
std::cin
)都有一个值,如果流准备好进行I/O操作,该值将返回true

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

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();
static std::ifstreams_inF(argv[j]);
标准::cin.rdbuf(s_inF.rdbuf());
如果(!s_inF)
{
库特