std::ofstream
std::ofstream fs(fpath);
- 可写方式
- 目录不存在,失败
- 目录存在,文件不存在,会创建文件
- 文件存在的话,会清空文件
- fstream不提供自动创建目录的方式
std::ifstream
std::ifstream fs(fpath);
std::fstream
std::fstream fs(fpath);
- 可读可写方式
- 目录不存在,失败
- 目录存在,文件不存在,会创建文件
- 文件存在的话,不会清空文件,从文件头部开始写
状态检测
打开文件后,如何判断是否成功呢? 直接if判断即可,如下,会调用fstream的operator bool函数。
if(fs)
okay;
else
error;
但fstream中有很多种状态,如is_open,bad,good,fail这些有什么区别吗?
#define OUTPUT(func) std::cout << #func << "=" << func() << std::endl
int main(int argc, char *argv[])
{
const std::string fpath = "D:\\tmp\\test\\d.txt";
std::fstream fs(fpath);
OUTPUT(fs.operator bool);
OUTPUT(fs.is_open);
OUTPUT(fs.bad);
OUTPUT(fs.good);
OUTPUT(fs.fail);
std::cout << fs.rdstate() << std::endl;
return 0;
}
可以参考官网描述 std::ios::rdstate 但平时我不怎么用得到。
|