【问题标题】:open file by class fstream class in drive c:在驱动器 c 中按 fstream 类打开文件:
【发布时间】:2015-11-20 09:02:19
【问题描述】:

我尝试通过 c: 驱动器中的 fstream 类打开文件,但它不起作用。

#include<fstream>

using namespace std;

int main(int argc, char* argv[]) {
        fstream f(L"c:/test.txt" , std::ios:out);
        if (!f)
        return 0;
    }

那段代码有什么问题?

【问题讨论】:

  • fstream f(L"c://test.txt" , std::ios:out); 在路径中使用两个斜杠字符。
  • 编译器不会给你一个错误,或者至少是一个警告吗?没有采用宽字符串的std::fstream constructor
  • @dgate 正斜杠不需要,仅用于反斜杠。
  • 我看到的唯一问题是您在std::ios::out 中缺少:。除此之外,它对我有用。会不会是权限问题?尝试以“管理员”身份运行 IDE。
  • @Joachim Pileborg 哦,是的,你是对的。它的两个反斜杠在 windows 中用作文件分隔符。

标签: c++ windows file ofstream


【解决方案1】:

试试这个:

fstream f("c:\\test.txt" , std::ios:out);

需要双倍\\

【讨论】:

    【解决方案2】:

    这很可能是因为您的应用程序没有打开该文件的正确权限。

    解决方案。

    尝试以管理员身份运行您的应用程序/IDE,方法是右键单击它并选择“以管理员身份运行”选项。

    备注。

    直接写入 C: 驱动器并不是大多数应用程序的常见用例,并且没有任何简单的方法可以解决这个问题。您要么使用正确的权限启动应用程序,要么将文件移至其他位置。

    如果您绝对必须这样做,那么您可以以管理员身份启动您的应用程序,读取/修改您的文件,然后drop your application's privileges

    【讨论】:

    • 谢谢。它成功了,我怎么能不以管理员身份执行?
    • @SaeidMo25 我已更新我的答案以解决您的后续问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多