C ++更改输出文件名(如果存在)

时间:2016-11-28 21:31:53

标签: html c++ output ostream

我正在尝试编写HTML输出文件。这个文件写得很好,但是我想知道是否有办法用它的文件名取一个字符串,检查是否存在,如果是,则以某种方式更改该字符串。所以我永远不会覆盖现有的文件。

string outputFile;
cin>>outputFile;
ofstream out;
string path ="..\\data\\"+ outputFile+ ".html";
out.open(path.c_str());

所以在这种情况下,如果输出文件让我们说"耶稣"然后我想做点什么,如果我这样做3次,我会有像Jesus.html,Jesus2.html,Jesus3.html这样的东西。不必为此编号,只要对该字符串进行任何更改即可。这甚至可能吗?我试过这个 tmpnam() 但我真的不明白它应该如何运作,甚至可以使用它。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以使用此处提到的方法之一检查文件是否存在:

https://samsaffron.com/blog/archive/2007/04/04/14.aspx

完整的代码看起来像这样

inline bool file_exists (const std::string& name) {
  struct stat buffer;   
  return (stat (name.c_str(), &buffer) == 0); 
}

while (file_exists(file_name))
    file_name += "_1";