0

たとえば、プログラム ファイル main.cpp の 4 つの部分にこのコード行があるとします。

ifstream fin; fin.open("filename.txt")

しかし、これら4つの場所すべてでこれらすべてのファイル名を変更したくありません。

これのグローバル変数名を作成するにはどうすればよいですか? filenames.txt では動作が異なりますか?

4

3 に答える 3

2

おそらく、次のようなグローバル変数を試しました。

const std::string filename = "filename.txt";

そして、次のように初期化しようとしましifstreamた:

ifstream fin; fin.open(filename);

そしてそれはあなたにとってうまくいきませんでした。これは、2011 標準をサポートする C++ コンパイラまたはライブラリがないことが原因である可能性があります。そのようなコンパイラがあれば、問題なく動作します。ただし、そうしない場合は、C スタイルの文字列をifstreamコンストラクターに渡す必要があります。

ifstream fin; fin.open(filename.c_str());
于 2012-09-10T23:21:09.227 に答える
1

これが私がそれについて行く方法です。

アプリケーション構成ファイルのパスを指定するコマンド ライン引数を渡します。アプリケーションが読み込まれると、この構成ファイルが解析され、ファイル名などの項目のすべての値が保存されます。要求に応じてこれらの値を格納および配信するクラスまたはグローバル構造を用意します。例えば:

fin.open(AppConfig.get("filename")); // if the AppConfig is a class.
fin.open(AppConfig["filename"]); // if AppConfig was a map like structure.

この種のデータ ドリブン開発は良い習慣です。使用しているファイルが 1 つだけの場合は、ファイルの先頭に定数名を定義するだけで済みます。

const char* FILENAME = "my file.txt"; // or
#define FILENAME "my file.txt"

毎回定数を使用します。

fin.open(FILENAME); // use this repeatedly
于 2012-09-10T23:18:54.100 に答える
0

グローバル const 変数を定義できます

const char* fileName = "filename.txt";

また

const std::string fileName = "filename.txt";

変更できないグローバル変数は悪くありません。次に使用法:

ifstream fin(fileName);
于 2012-09-10T23:17:27.603 に答える