c++读定文件

阅读数:103 评论数:0

跳转到新版页面

分类

C/C++

正文

一、概述

在标准 C++ 中,读取文件通常使用 <fstream> 头文件中的 std::ifstream 类。std::ifstream 提供了多种方法来读取文件内容,包括逐行读取、逐字符读取以及读取整个文件等。

二、逐行读取文件

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

int main() {
    std::ifstream inputFile("example.txt"); // 打开文件

    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    std::string line;
    while (std::getline(inputFile, line)) { // 逐行读取文件内容
        std::cout << line << std::endl; // 输出每行内容
    }

    inputFile.close(); // 关闭文件
    return 0;
}

三、逐字读取文件

#include <iostream>
#include <fstream>

int main() {
    std::ifstream inputFile("example.txt"); // 打开文件

    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    char ch;
    while (inputFile.get(ch)) { // 逐字符读取文件内容
        std::cout << ch; // 输出每个字符
    }

    inputFile.close(); // 关闭文件
    return 0;
}

四、读取整个文件

#include <iostream>
#include <fstream>
#include <sstream>

int main() {
    std::ifstream inputFile("example.txt"); // 打开文件

    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    std::stringstream buffer;
    buffer << inputFile.rdbuf(); // 将文件内容读入字符串流
    std::string content = buffer.str(); // 获取字符串流中的内容

    std::cout << content << std::endl; // 输出整个文件内容

    inputFile.close(); // 关闭文件
    return 0;
}

五、读取二进制文件

#include <iostream>
#include <fstream>
#include <vector>

int main() {
    std::ifstream inputFile("example.bin", std::ios::binary); // 以二进制模式打开文件

    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 获取文件大小
    inputFile.seekg(0, std::ios::end);
    std::streamsize size = inputFile.tellg();
    inputFile.seekg(0, std::ios::beg);

    // 创建缓冲区并读取文件内容
    std::vector<char> buffer(size);
    if (inputFile.read(buffer.data(), size)) {
        // 处理二进制数据
        std::cout << "读取了 " << size << " 字节的数据" << std::endl;
    }

    inputFile.close(); // 关闭文件
    return 0;
}

六、以字节方式读取文件

#include <iostream>
#include <fstream>
#include <vector>

int main() {
    // 打开文件,以二进制模式
    std::ifstream inputFile("example.bin", std::ios::binary);
    
    // 检查文件是否成功打开
    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 移动文件指针到文件末尾,以确定文件大小
    inputFile.seekg(0, std::ios::end);
    std::streamsize size = inputFile.tellg();
    inputFile.seekg(0, std::ios::beg);

    // 创建缓冲区以存储文件内容
    std::vector<char> buffer(size);

    // 读取文件内容到缓冲区
    if (inputFile.read(buffer.data(), size)) {
        // 处理二进制数据
        std::cout << "读取了 " << size << " 字节的数据" << std::endl;

        // 示例:输出前10个字节的十六进制表示
        for (std::streamsize i = 0; i < std::min(size, std::streamsize(10)); ++i) {
            printf("%02X ", static_cast<unsigned char>(buffer[i]));
        }
        std::cout << std::endl;
    } else {
        std::cerr << "读取文件时出错" << std::endl;
    }

    // 关闭文件
    inputFile.close();
    return 0;
}

读取4字节转换类std::string

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

int main() {
    // 打开文件,以二进制模式
    std::ifstream inputFile("example.bin", std::ios::binary);
    
    // 检查文件是否成功打开
    if (!inputFile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // 创建一个字符数组用于存储读取的字节
    char buffer[4];

    // 读取4个字节
    if (inputFile.read(buffer, 4)) {
        // 将读取的字节转换为std::string
        std::string result(buffer, 4);
        
        // 输出结果
        std::cout << "读取的字符串: " << result << std::endl;
    } else {
        std::cerr << "读取文件时出错或文件内容不足4个字节" << std::endl;
    }

    // 关闭文件
    inputFile.close();
    return 0;
}



相关推荐