📅  最后修改于: 2023-12-03 14:39:55.276000             🧑  作者: Mango
在C++中,我们可以使用一些库函数来从文件中读取数据。有时候,我们需要将整个文件读入变量中进行处理。下面介绍两种常见的方法:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
// 以文本模式打开文件
ifstream file("test.txt");
// 判断是否打开成功
if (!file.is_open())
{
cout << "Fail to open file!" << endl;
return 0;
}
// 将文件内容读入字符串
string str((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
// 关闭文件
file.close();
// 输出文件内容
cout << str << endl;
return 0;
}
此方法中,我们使用了ifstream
库函数打开一个文本文件,在成功打开文件后,使用std::istreambuf_iterator
将文件内容读入字符串中,并关闭文件。最后输出读取的内容。
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
// 以只读的方式打开文件
FILE* pFile = fopen("test.txt", "r");
// 判断是否打开成功
if (!pFile)
{
cout << "Fail to open file!" << endl;
return 0;
}
// 查询文件长度
fseek(pFile, 0, SEEK_END);
long int size = ftell(pFile);
fseek(pFile, 0, SEEK_SET);
// 读取文件内容
char* buffer = new char[size + 1];
fread(buffer, 1, size, pFile);
buffer[size] = '\0';
// 关闭文件
fclose(pFile);
// 将内容转为字符串
string str(buffer);
// 输出文件内容
cout << str << endl;
delete[] buffer;
return 0;
}
在此方法中,我们使用了C风格的文件读写函数fopen
和fclose
,以及fseek
和ftell
两个函数,分别用于查询文件长度和文件指针位置。根据文件长度,我们动态分配了一个字符数组buffer
,并使用fread
函数将文件内容读入其中。最后将字符数组转为字符串,并输出文件内容。
上述两种方法都可以实现将整个文件读入变量,具体使用时可以根据实际需求进行选择。