📜  c++ 获取文件内容 - C++ (1)

📅  最后修改于: 2023-12-03 15:14:01.684000             🧑  作者: Mango

C++ 获取文件内容

在C++中读取文件内容是一项非常基础的技能,本文将介绍几种方法。

方法一:使用fstream

这是一种基于流的方式,可以很方便地读取文件的内容。

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

using namespace std;

int main()
{
    ifstream in("file.txt");
    if (!in.is_open())
    {
        cout << "Open file failed" << endl;
        return 1;
    }

    string line;
    while (getline(in, line))
    {
        cout << line << endl;
    }

    return 0;
}

上面的代码会打开一个名为file.txt的文件,如果文件打开成功,就会逐行读取文件的内容,并输出到屏幕上。否则就会提示打开文件失败。

方法二:使用fread

这是一种更低层次的方式,可以很灵活地读取文件的内容。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fp;
    char buf[1024];
    int len;

    fp = fopen("file.txt", "r");
    if (fp == NULL)
    {
        printf("Open file failed\n");
        return 1;
    }

    while ((len = fread(buf, sizeof(char), sizeof(buf), fp)) > 0)
    {
        fwrite(buf, sizeof(char), len, stdout);
    }

    fclose(fp);

    return 0;
}

上面的代码同样会打开一个名为file.txt的文件,如果文件打开成功,就会不停地读取文件的内容,并输出到屏幕上。最后关闭文件句柄。

方法三:使用boost库

如果你用boost库的话,会非常方便地读取文件的内容。

#include <boost/algorithm/string.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <iostream>
#include <string>

using namespace std;
using namespace boost::filesystem;

int main()
{
    path file_path("file.txt");
    if (!exists(file_path))
    {
        cout << "File not exists" << endl;
        return 1;
    }

    ifstream in(file_path);
    if (!in.is_open())
    {
        cout << "Open file failed" << endl;
        return 1;
    }

    string contents((istreambuf_iterator<char>(in)), istreambuf_iterator<char>());
    cout << contents << endl;

    return 0;
}

上面的代码同样会打开一个名为file.txt的文件,如果文件存在,就会一次性读取文件的全部内容,并输出到屏幕上。如果文件不存在或打开失败,就会提示错误信息。

总结

以上就是使用C++获取文件内容的三种方法,每一种方法都有其优点和缺点,具体选择哪一种方法取决于应用场景和个人偏好。