【问题标题】:Ifstream cannot open file with amdinistrator rightsIfstream 无法以管理员权限打开文件
【发布时间】:2018-02-18 08:28:03
【问题描述】:

我使用此代码尝试打开和读取文件(非空),但 ifstream 不起作用 - 它无法打开文件:我添加了文件打开检查,它显示 ifstream 甚至没有(无法)打开文件。

我授予程序管理员权限,但 ifstream 仍然无法读取文件。

我也试图找到一个路径,ifstream会读取这个文件,但我没有成功,最后我尝试使用绝对路径打开文件 - 但结果是一样的。

该文件位于程序的根文件夹中,但我将它放在任何地方,没有任何改变。

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main() {
    string s;
    ifstream file("fix.txt");
    if (file)
        cout << "SUCCESSFULL OPENING" << endl;

    while (getline(file, s)) {
        cout << s << endl;
        s += "+";
        cout << s << endl;
    }

    file.close();

    return 0;
}

【问题讨论】:

  • 你如何运行你的程序?从哪里?当你运行你的程序时,它的当前目录是什么?您尝试读取的文件所在的位置是否相同?你确定吗?
  • @some-programmer-dude,我只是使用 Visual Studio IDE 运行文件,我找不到程序当前的目录,但我将文件放在程序的每个文件夹中,并且没有效果。
  • 从 Visual Studio 运行时,默认当前目录将是项目根目录 IIRC(或者可能是工作区根目录?)。它不是可执行程序所在的位置。您可以在项目设置中更改目录。

标签: c++ file text ifstream


【解决方案1】:

您可以通过激活流上的异常来访问更详细的错误代码

file.exceptions(std::ios_base::failbit);

然后,您可以通过写作获得更多详细信息

try {
   file.open("fix.txt");
}
catch(std::ios_base::failure& f) {
    // f.what() contains a message, f.code() returns a std::error_code
}

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多