C++文件操作

247 阅读1分钟

std::ios几种模式

ios::in
打开文件用于读取

ios::out
打开文件用于写入

ios::ate
文件打开后定位到文件末尾

ios::app
所有写入都追加到文件末尾

ios::trunc
如果文件已存在则先删除该文件

ios::binary
二进制方式打开文件,调用ios::binary与否的区别主要在于对换行符的处理方式
在windows下,以ios::binary方式打开,换行符被解释成\n,反之,换行符被解释成\r\n
在类unix下,换行符都被解释成\n,没有区别

is_open()

返回一个bool值,true表示文件已经被顺利打开,false则相反

验证流状态的相关函数

bad()
如果在读写过程中出错,返回true

fail()
除了bad()之外,在格式错误时也会返回true

eof()
读文件到达文件末尾,返回true

good()
最常用的函数,如果以上任何一个函数返回true的话,该函数返回false

clear()
重置以上成员函数的检查状态

简单的实例

int main() {
    std::ofstream out_file;
    out_file.open("data.txt", std::ios::out | std::ios::trunc);
    if (!out_file.is_open()) {
        std::cout << "file data.txt open failed" << std::endl;
        return -1;
    }
    if (out_file.good()) {
        out_file << "This is a data.\n";
    }
    out_file.close();
    return 0;
}