2017-03-18 4 views
0

コーディング中に、変数を使用して指定するディレクトリにあるファイルを開く方法がわかりませんでした。私は、インターネット上で少しどこでも見えたが、私は成功しなかった...Ifstream:変数を使用してアクセス可能なファイルを開く

だから基本的に、私は「データ/ 2014/09」に位置しています「2014_09_01.txt」と呼ばれるファイルを持っています。私のコードでは、私は(それが正常に動作します!)のようなファイルの名前を指定します。

int year = 2014, month = 9, day = 1; 
char filename [256]; 
sprintf(filename,"%d_%02d_%02d.txt", year, month, day); 

をしかし、私は何をしたいと、その実際のディレクトリにこのファイルを取得することです。次のコードは間違っているが、これは私が話しているという考えである。そのようなことを行う簡単な方法は、

input.open("/Data/%d/%02d/%s",year,month,filename); 

ありますか?それはささいなことだが、私はそれを適切に行う方法を見つけることができない。

どうもありがとう:)

+0

を、それをモジュール私はあなただと思いますあなたが最初の文字として ''/''を含んでいたので、コードは間違っています。削除してください。 – Rakete1111

+0

いいえ、これは何も変わりません。私は、この種の関数の構文が間違っているので、 "input.open"行が間違っていることを知っています。しかし、ファイルが置かれているディレクトリにアクセスするための変数を指定したいという考え方には根本的な根拠があります。 – Einsiedler

+0

はい、私は一般的な考え方が正しいと思っていました。変数の前にパスを追加して開くことができます。 (最初の '/'がなければ)。 – Rakete1111

答えて

0

あなたが試してみました:

char filename[256]; 
sprintf(filename, "/Data/%d/%02d/%d_%02d_%02d.txt", year, month, year, month, day); 

input.open(filename); 

...または多分を関数内のファイルパス生成方法をラップ -

void getFilePath(char* outFileName, int year, int month, int day) 
{ 
    sprintf(outFileName, "/Data/%d/%02d/%d_%02d_%02d.txt", year, month, year, month, day); 
} 
+0

ありがとう、それは働いています:)私は昨日同様のものを試しましたが、正しくコンパイルされませんでした。 – Einsiedler

関連する問題