无论尝试什么解决方案,ofstream / fstream都不会起作用

时间:2014-04-10 17:47:50

标签: c++ fstream flush fclose

好的伙计们,我已经尝试了我能想到的一切。我正在将文件名传入此函数。一个小上下文: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;
 }

}

2 个答案:

答案 0 :(得分:1)

你几乎肯定会检查错误的文件。请记住,相对路径是相对于进程的工作目录的,这不一定与可执行文件在磁盘上的位置相同。

答案 1 :(得分:0)

我通过控制台编译并运行它,现在它可以工作,没有编辑。看来我的IDE并不喜欢代码中的东西。无论如何,谢谢大家的回应。