У меня есть этот код:
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();
любое предложение ?
Ты можешь использовать is_open
за это. Посмотреть здесь:
http://www.cplusplus.com/reference/fstream/ifstream/is_open/
Все объекты, которые являются подклассами std::basic_ios
— лайк s_inF
а также std::cin
, в вашем случае — иметь operator bool
возвращает 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();