📅  最后修改于: 2023-12-03 15:14:01.684000             🧑  作者: Mango
在C++中读取文件内容是一项非常基础的技能,本文将介绍几种方法。
这是一种基于流的方式,可以很方便地读取文件的内容。
#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的文件,如果文件打开成功,就会逐行读取文件的内容,并输出到屏幕上。否则就会提示打开文件失败。
这是一种更低层次的方式,可以很灵活地读取文件的内容。
#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库的话,会非常方便地读取文件的内容。
#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++获取文件内容的三种方法,每一种方法都有其优点和缺点,具体选择哪一种方法取决于应用场景和个人偏好。