この質問の言い回しに問題があります(タイトルからわかるように)が、試してみます:
bool変数がtrueの場合にファイルストリーム(ofstream)を開いていますが、同じboolがtrueの場合にファイルストリームを再度閉じようとするとエラーが発生します
'fout' was not declared in this scope"
最小限の例を次に示します。
using namespace std;
#include <fstream>
int main(int argc, char * argv[]) {
bool output = true;
if (output) {
ofstream fout("test.txt");
}
if (output) {
fout.close();
}
} // end main
私がやろうとしているのは、ブール値の「出力」が真である場合にのみ、プログラムからの結果を格納するためのファイルを開くことです。毎回ファイルを開くようにすることもできますが(テストの場合は不可)、実際のファイル名はプログラムで設定された変数に依存し、古いファイルを上書きしたくないため、しばらくすると非常に面倒になります。だから私はむしろこのようにしたいです。
編集:今日、私は「スコープ」が何であるかを学びました...みんなありがとう!
動作するコードは次のようになります。
using namespace std;
#include <fstream>
int main(int argc, char * argv[]) {
bool output = true;
ofstream fout;
if (output) {
fout.open("test.txt");
}
if (output) {
fout.close();
}
} // end main