打开文件不起作用

时间:2015-10-29 19:21:47

标签: c++

#include <iostream>
#include <iomanip>
#include <cmath>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;


int main() {
    ifstream input_file("DataStuff.txt", ios::in);
    //trying to open the notepad file named DataStuff.txt
    if(!input_file){ 
        cerr << "Error" << endl; exit(1); 
    } 
    else{ 
        cout << "good 2 go" << endl; 
    } 

}

2 个答案:

答案 0 :(得分:4)

试试这个:

#include <cstring>
#include <fstream>
#include <iostream>

int main() {
  std::ifstream input_file("DataStuff.txt", ios::in);
  if (input_file) {
    std::cout << "ok\n";
  } else {
    std::cerr << "error: " << strerror(errno) << "\n";
    return 1;
  }
  return 0;
}

输出应该让你知道发生了什么。很可能文件不存在或权限不正确。

进一步说明:如果文件无法打开,则std::ifstream的构造函数会将errno设置为一个值,指示错误是什么。您可以使用strerror()函数(在<cstring>中定义)来访问描述错误的字符串。

祝你好运!

答案 1 :(得分:0)

&#34;打开文件&#34; 的使用意味着文件:"DataStuff.txt"与您的程序之间建立了连接,输入流,{ {1}}名为ifstream的对象,允许您从文件中读取。

文件无法打开的一个可能原因是它不存在(包括错误的名称)。

另一个原因是文件权限是否允许访问,例如,如果您不是文件的所有者并且设置为私有。

要获得有关实际原因的更多信息,您应该熟悉流rdstates并将它们集成到您的代码中,以在您尝试打开它后检查流的状态。