1

テキスト ファイルを開いてすべての行を読み取るコンペティションのアプリケーションを作成しました。

fstream infile("C:\Struct.in");

しかし、コンペティション ルールには、テキスト ファイルをどこに配置すべきかについては言及されていません。プログラムが配置されているフォルダ内に配置する必要があると思います。したがって、コンパイラにそのフォルダーを検索するように指示できます。

fstream infile("C:\Users\User...Struct.in");

この場合の問題は、検査官がフォルダーを正確にどこに配置するかわからないことです。おそらく彼はデスクトップに配置するか、ダウンロードに配置する可能性があります...これは問題です。最後に、これを行う最善の方法は、実行時にコンパイラにフォルダーの場所を見つけてもらい、テキスト ファイルを検索して残りを実行することであることがわかりました。次に例を示します。

string ExePath = GetFilePath(Program's Exe);
string TextFilePath = ExePath + "Struct.in";
fstream infile(TextFilePath);

パスカルでは、コマンドは「ExtractFilePath」ですが、私はC++が初めてなので、これを行う方法はありますか? これまでのところ、インターネットで検索しましたが、有用なものは見つかりませんでした。

CodeBlocks 12.11 を使用しています (コンパイラ: gnu gcc)

どうもありがとう

4

2 に答える 2

1

エスケープ文字とc:\\Struct同じである必要があります。\しかし、通常の解決策はただ"./Struct.in". Windows は/このコンテキストで文字を理解し.、現在のディレクトリの共通名です。

于 2013-10-30T10:40:37.000 に答える