0

わかりました、私は考えられるすべてを試しました。この関数にファイル名を渡しています。ちょっとしたコンテキスト: hash_table は、既に初期化され、キー ペアで満たされたベクトルであり、ペアの「値」部分は、フィールド「bucket_size」を持つリンク リストです。これらのフィールドが実際にアクセスされているかどうかを確認するために cout を使用すると、アクセスされます。デバッガーでさえ、それらを出力ストリームにファイルされているものとしてリストします。そこに flush() と close() がありますが、ファイルには何も書き込まれません。ストリームにエラーがないことを示す true を返します。誰にもアイデアはありませんか?

 string line;
 std::ofstream ofs;
 if(ofs.is_open())
     ofs.close();
 ofs.open(filename);
 if (ofs.is_open())
 {
     cout << "File Opened" << endl;
     for (double i = 0; i < hash_table.capacity(); ++i)
     {
         ofs << "Bucket Number " << i;
         if (hash_table[i].value != NULL)
             ofs << " Bucket Size: " << hash_table[i].value->bucket_size << endl;
         else
             ofs << " Bucket Size: 0" << endl;
         ofs.flush();
     }
     cout << "closing file stream" << endl;
     ofs.flush();
 ofs.close();
 if (ofs.good())
         return true;
     else
         return false;
 }
 else
 {
 cout << "File not opened" << endl;
 return false;
 }

}

4

2 に答える 2

1

ほとんどの場合、間違ったファイルを調べています。相対パスはプロセスの作業ディレクトリからの相対パスであり、実行可能ファイルがディスク上に存在する場所と必ずしも同じではないことに注意してください。

于 2014-04-10T18:10:13.740 に答える
0

コンパイルしてコンソールで実行したところ、編集なしで動作するようになりました。私のIDEはコードの何かが好きではないようです。それにもかかわらず、応答してくれてありがとう.s

于 2014-04-10T18:43:20.733 に答える