温馨提示×

C++ Linux中如何实现文件操作

小樊
37
2025-12-18 23:11:27
栏目: 编程语言

在C++中,你可以使用标准库中的<fstream>头文件来实现文件操作。这个头文件提供了ifstreamofstreamfstream三个类,分别用于读取、写入和读写文件。

下面是一些基本的文件操作示例:

打开文件

#include <fstream>
#include <iostream>

int main() {
    // 创建一个输出文件流对象,并打开一个文件用于写入
    std::ofstream outFile("example.txt");

    // 检查文件是否成功打开
    if (!outFile.is_open()) {
        std::cerr << "Unable to open file for writing!" << std::endl;
        return 1;
    }

    // 写入数据到文件
    outFile << "Hello, World!" << std::endl;

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

    return 0;
}

读取文件

#include <fstream>
#include <iostream>
#include <string>

int main() {
    // 创建一个输入文件流对象,并打开一个文件用于读取
    std::ifstream inFile("example.txt");

    // 检查文件是否成功打开
    if (!inFile.is_open()) {
        std::cerr << "Unable to open file for reading!" << std::endl;
        return 1;
    }

    // 读取文件内容到字符串
    std::string line;
    while (std::getline(inFile, line)) {
        std::cout << line << std::endl;
    }

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

    return 0;
}

追加数据到文件

#include <fstream>
#include <iostream>

int main() {
    // 创建一个输出文件流对象,并以追加模式打开一个文件
    std::ofstream outFile("example.txt", std::ios::app);

    // 检查文件是否成功打开
    if (!outFile.is_open()) {
        std::cerr << "Unable to open file for appending!" << std::endl;
        return 1;
    }

    // 追加数据到文件
    outFile << "Appended text!" << std::endl;

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

    return 0;
}

二进制文件操作

对于二进制文件的读写,你可以使用std::ios::binary标志:

#include <fstream>
#include <iostream>

int main() {
    // 写入二进制文件
    {
        std::ofstream outFile("example.bin", std::ios::binary);
        if (!outFile.is_open()) {
            std::cerr << "Unable to open file for writing binary data!" << std::endl;
            return 1;
        }
        int data = 42;
        outFile.write(reinterpret_cast<const char*>(&data), sizeof(data));
        outFile.close();
    }

    // 读取二进制文件
    {
        std::ifstream inFile("example.bin", std::ios::binary);
        if (!inFile.is_open()) {
            std::cerr << "Unable to open file for reading binary data!" << std::endl;
            return 1;
        }
        int data;
        inFile.read(reinterpret_cast<char*>(&data), sizeof(data));
        std::cout << "Read from file: " << data << std::endl;
        inFile.close();
    }

    return 0;
}

在使用文件流时,记得检查文件是否成功打开,并在操作完成后关闭文件。这样可以避免资源泄露和其他潜在的问题。此外,对于大型文件操作,考虑使用缓冲区来提高效率。

0