当我们需要读取文件时,可以使用以下四种方式:
1. 使用 C++ 标准库库函数
我们可以使用 ifstream
类和其对象读取文件内容,需要包含头文件 <fstream>
。
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream file("example.txt");
if (!file.is_open()) {
cout << "无法打开文件" << endl;
return 1;
}
string line;
while (getline(file, line)) {
cout << line << endl;
}
file.close();
return 0;
}
该程序会尝试打开名为 example.txt
的文件,如果文件可以成功打开,则每行读取文件内容,并将其打印到控制台中。
2. 使用 C 标准库函数
我们也可以使用 C 标准库函数来读取文件内容,需要包含头文件 <cstdio>
。
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
FILE* file = fopen("example.txt", "r");
if (!file) {
cout << "无法打开文件" << endl;
return 1;
}
char buffer[100];
while (fgets(buffer, 100, file)) {
cout << buffer;
}
fclose(file);
return 0;
}
该程序使用 fopen()
函数打开名为 example.txt
的文件,读取文件内容,并将其使用 cout
输出。
3. 使用 boost 库
我们也可以使用 C++ 库 Boost 中的函数读取文件内容,需要包含头文件 <boost/filesystem.hpp>
和 <boost/iostreams/device/file.hpp>
。
#include <boost/filesystem.hpp>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/stream.hpp>
#include <iostream>
using namespace std;
using namespace boost;
using namespace boost::filesystem;
using namespace boost::iostreams;
int main()
{
path p("example.txt");
if (!exists(p)) {
cout << "无法打开文件" << endl;
return 1;
}
file_source file(p);
stream<file_source> stream(file);
string line;
while (getline(stream, line)) {
cout << line << endl;
}
return 0;
}
该程序使用 Boost 库中的 file_source
类和 stream
类来读取文件内容,可以读取大文件,并且提供了更多的控制操作。
4. 使用 Qt 库
我们也可以使用 C++ 库 Qt 中的函数读取文件内容,需要包含头文件 <QFile>
。
#include <QCoreApplication>
#include <QFile>
#include <QtDebug>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("example.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "无法打开文件";
return 1;
}
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
qDebug() << line;
}
file.close();
return a.exec();
}
该程序使用 Qt 库中的 QFile
类和 QTextStream
类来读取文件内容,可以使用更多 Qt 提供的函数对文件进行操作。
以上四种方式都可以用来读取文件内容,具体使用哪种方式要根据实际的需求来选择。
下面是一个使用 ifstream
类读取二进制文件的示例:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream file("example.bin", ios::in | ios::binary);
if (!file.is_open()) {
cout << "无法打开文件" << endl;
return 1;
}
int num;
file.read(reinterpret_cast<char*>(&num), sizeof(int));
cout << num << endl;
file.close();
return 0;
}
该程序使用 ifstream
类读取名为 example.bin
的二进制文件,并且读取其中的一个整数并输出至控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++读取文件的四种方式总结 - Python技术站