2016-03-26 8 views
0

私は配列 'inputLayer []'をとり、配列の各要素を個々のファイルに格納する関数を作成しようとしています。関数が呼び出された最初の時点で、ファイルを作成し、それが呼び出されたときにinputLayerの新しい要素をファイルの最後に追加する必要があります。私のために働いている過去にC++ファイルが追加または上書きされないのはなぜですか?

fstream recordFile; 
recordFile.open ("inputRecord.txt", fstream::in | fstream::out | fstream::app); 
recordFile << inputLayer[0] << endl; 

が、今、私は私が好きな多くの変数にを持っている:私は繰り返し、単一のファイルに単一の変数を格納した場合

私はこのようなものを使用します"input_0_record.txt"、 "input_1_record.txt"という名前の個々のファイルに書き込みます。

以下のコードでは、stringstreamを使用してファイル名を作成し、上記のものと同じ方法を使用して変数をファイルに書き込みます。

int recordInputVariables(double inputLayer[]) 
{ 
    for(int i = 0; i < inputLayerSize; i ++) 
    { 
     stringstream ss; 
     ss << i; 
     string inputNumberString = ss.str(); 
     string recordFileName = "input_"; 
     recordFileName.append(inputNumberString); 
     recordFileName.append("_record.txt"); 
     fstream inputRecordFile(recordFileName.c_str()); 

     inputRecordFile.open (recordFileName, fstream::in | fstream::out | fstream::app); 
     inputRecordFile << inputLayer[i] << endl; 
     inputRecordFile.close(); 

    } 

    return 0; 
} 

しかし、私はこれを実行すると、ファイルが作成され、変数がファイルに関数が呼び出された最初の時間を書かれているが、その後の回は関数がファイルに書き込まれた新しい変数が存在しないと呼ばれています。

私は、ファイルを開く方法に問題があるとほとんど確信しています。誰かが私が間違って行ったことを発見できますか?

+0

を必要に応じて、すべてがなります

int recordInputVariables(double inputLayer[]) { for(int i = 0; i < 5; i ++) { stringstream ss; ss << i; string inputNumberString = ss.str(); string recordFileName = "input_"; recordFileName.append(inputNumberString); recordFileName.append("_record.txt"); cout << recordFileName << endl; ofstream inputRecordFile(recordFileName.c_str()); // Here you have opened file by using constructor(above) so don't // need to open it again as below // inputRecordFile.open (recordFileName, ofstream::out); inputRecordFile << inputLayer[i] << endl; inputRecordFile.close(); cout << "loop" << endl; } return 0; } 

。 http://stackoverflow.com/a/22339739/4077900 – anukul

+0

これは元のコードにも当てはまります。あなたはそれを試しましたか? –

答えて

2
inputRecordFile.open (recordFileName, fstream::out | fstream::app); 

この文脈でfstream::inを使用しないでください。

+0

ありがとう、私はコードのこの行に加えて、それを解決しました:fstream inputRecordFile(recordFileName.c_str());ちょうどされている必要があります:fstream inputRecordFile; – Hugh

1

あなたは同じ問題をコーディングすることができます:今、あなたは、このコードを実行し、C++ 98を使用している場合、あなたは...

関連する問題