#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成功)
答案 0 :(得分:4)
你必须告诉你正在打开输出文件的fstream,比如这个
std::fstream fs("/tmp/test", std::ios::out);
或者使用ofstream而不是fstream,默认情况下会打开输出文件:
std::ofstream fs("/tmp/test");
答案 1 :(得分:0)
答案 2 :(得分:0)
我不知道哪个是fstream构造函数的默认模式,我试过这个并且它工作了
std::fstream f1("/tmp/test", std::fstream::in | std::fstream::out);
它为输入和输出创建一个文件,您应该检查fstream文档here