如何在C ++中的不同目录中创建文件?

时间:2009-12-03 22:18:24

标签: c++

#include <iostream>
#include <fstream>
#include <cstdlib>

int main() {
    std::fstream f1("/tmp/test");
    if (!f1) {
        std::cerr << "f1 failed\n";
    } else {
        std::cerr << "f1 success\n";
    }
    FILE *f2 = fopen("/tmp/test", "w+");
    if (!f2) {
        std::cerr << "f2 failed\n";
    } else {
        std::cerr << "f2 success\n";
    }
}

在/ tmp /中创建一个文件对我来说不适用于fstreams,但它与fopen一起使用。可能是什么问题呢? (当/ tmp / test不存在时,我得到f1失败并且f2成功)

3 个答案:

答案 0 :(得分:4)

你必须告诉你正在打开输出文件的fstream,比如这个

std::fstream fs("/tmp/test", std::ios::out);

或者使用ofstream而不是fstream,默认情况下会打开输出文件:

std::ofstream fs("/tmp/test");

答案 1 :(得分:0)

您的第一个方法调用不会自动创建文件:请参阅fstream

如果您希望第一次方法调用来创建文件,请使用:

std::fstream f1("/tmp/test", fstream::out);

答案 2 :(得分:0)

我不知道哪个是fstream构造函数的默认模式,我试过这个并且它工作了

std::fstream f1("/tmp/test", std::fstream::in | std::fstream::out);

它为输入和输出创建一个文件,您应该检查fstream文档here