检查文件是否存在

时间:2014-11-15 14:16:23

标签: c++

我想知道这里的错误是什么。我想输入文件名,然后检查文件是否存在,但我的代码不起作用,我不知道为什么!

#include <fstream> //for file I/O
#include <iostream>
#include <string>

    using namespace std;
    int main()
    {
    string filename;
    cout << "Input a filename:  ";
    cin >> filename;
    fstream filestr;
      filestr.open (filename);
      if (filestr.is_open())
      {
        filestr << "File successfully open";
        filestr.close();
      }
      else
      {
        cout << "Error opening file";
      }
    return 0;
    }

2 个答案:

答案 0 :(得分:0)

  filestr.open (filename);

应该是

  filestr.open (filename.c_str());

但是,C ++ 11中存在过载,它以字符串作为参数。

在C ++ 11中: -

void open (const char* filename,
           ios_base::openmode mode = ios_base::in | ios_base::out);
void open (const string& filename,
           ios_base::openmode mode = ios_base::in | ios_base::out);

答案 1 :(得分:0)

当您可能希望使用std::fstream来指定您想要输入而不是写输出时,您在此处使用std::ifstream

std::ifstream file(filename);
bool exists = file; // operator bool()