.is_open()
を使用する代わりに、ファイルを開く例外を使用することはできますか?
例えば:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
もしそうなら、someException
とはどんな型ですか?
http://en.cppreference.com/w/cpp/io/basic_ios/exceptions
この回答もお読みください 11085151 これはこれを参照しています 記事
// ios::exceptions
#include <iostream>
#include <fstream>
using namespace std;
void do_something_with(char ch) {} // Process the character
int main () {
ifstream file;
file.exceptions ( ifstream::badbit ); // No need to check failbit
try {
file.open ("test.txt");
char ch;
while (file.get(ch)) do_something_with(ch);
// for line-oriented input use file.getline(s)
}
catch (const ifstream::failure& e) {
cout << "Exception opening/reading file";
}
file.close();
return 0;
}
Wandbox で実行されるサンプルコード
編集:const参照で例外をキャッチ 2145147
編集:例外セットからフェイルビットを削除しました。より良い回答にURLを追加しました。
std::ios::exceptions
に関するcppreference.comの記事 から
失敗すると、failbitフラグが設定され(メンバーの失敗で確認できます)、例外で設定された値によっては、例外がスローされる場合があります。