C++ File文件处理 创建和写文件

C++ 中,可以使用标准库中的文件流类 (fstream) 来创建和写入文件。C++ 提供了方便的文件操作方式。通过 fstream 类,可以轻松地创建文件、写入数据。掌握这些基础知识,可以实现进行各种文件处理任务。本文主要介绍C++ File文件操作创建和写文件。

1、创建文件

要使用C++ 创建文件,可以使用open(),此方法没有返回值:文件顺利打开后,就可以直接使用流对象来判断是否打开成功。

例如,

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream oFile;
    //不存在则新建文件
    oFile.open("test1.txt", ios::app);
    if (!oFile)  //true则说明文件打开出错
        cout << "error 1" << endl;
    else
        oFile.close();
    return 0;
}

注意:要在特定目录中创建文件(需要权限),需要指定文件的路径,并使用双反斜杠转义“\”字符(对于Windows)。在Mac和Linux上,只需编写路径即可,例如:/Users/cjavapy/filename.txt

2、创建并写入文件

要创建文件,可以使用ofstreamfstream类,然后指定文件名。

要写入文件,请使用插入运算符(<<)。

#include <iostream>
#include <fstream>
using namespace std;
int main() {
  // 创建并打开一个文本文件
  ofstream MyFile("filename.txt");
  // 写入文件
  MyFile << "www.cjavapy.com";
  // 关闭文件
  MyFile.close();
}

注意close()关闭文件可以清理不必要的内存空间。

文件写入还有其它函数,可以参考下面的文档,

相关函数C++ File文件处理相关函数

3、检查文件状态

可以通过检查文件流的状态来确定文件是否成功打开以及操作是否成功。文件流类 (fstreamifstreamofstream) 提供了多种方法来检查文件的状态。

1)创建文件并写入内容,检查文件状态

#include <iostream>
#include <fstream>  // 用于文件操作

int main() {
    // 创建并打开一个文件,文件名为 "example.txt"
    std::ofstream outFile("example.txt");

    // 检查文件是否成功打开
    if (!outFile.is_open()) {
        std::cerr << "无法打开文件!" << std::endl;
        return 1;  // 返回非零值表示发生错误
    }

    // 向文件写入内容
    outFile << "Hello, this is a test file!" 
    << std::endl;
    outFile << "This is the second line." 
    << std::endl;

    // 检查文件流的状态
    if (outFile.fail()) {
        std::cerr << "文件写入失败!" 
        << std::endl;
        return 1;  // 文件写入失败,返回错误
    }

    if (outFile.good()) {
        std::cout << "文件写入成功!"
        << std::endl;
    }

    // 关闭文件
    outFile.close();

    // 检查文件是否成功关闭
    if (outFile.bad()) {
        std::cerr << "文件关闭时发生错误!"
        << std::endl;
        return 1;  // 文件关闭失败,返回错误
    }

    return 0;
}

2)读取文件并检查状态

#include <iostream>
#include <fstream>

int main() {
    // 打开文件进行读取
    std::ifstream inFile("example.txt");

    // 检查文件是否成功打开
    if (!inFile.is_open()) {
        std::cerr << "无法打开文件!" << std::endl;
        return 1;
    }

    std::string line;
    while (std::getline(inFile, line)) {
        std::cout << line << std::endl;
    }

    // 检查是否到达文件末尾
    if (inFile.eof()) {
        std::cout << "已到达文件末尾。" << std::endl;
    }

    // 检查是否发生错误
    if (inFile.fail()) {
        std::cerr << "文件读取失败!" << std::endl;
    }

    // 关闭文件
    inFile.close();

    return 0;
}

推荐阅读
cjavapy编程之路首页