您的位置:

使用C++ ifstream读取文件内容的方法

一、打开文件

C++的ifstream可用于读取文件内容,首先需要打开文件。

使用ifstream对象的open()函数打开文件,如果文件不存在,则会创建该文件,如果文件存在,则会打开该文件,同时覆盖文件原有内容。

#include 
#include 
   
using namespace std;

int main()
{
    string filename = "example.txt";
    ifstream ifs;
    ifs.open(filename);

    if(!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return 0;
    }

    // 文件读取代码

    ifs.close();
    return 0;
}

   
  

在打开文件之后,需要使用流提取运算符“>>”读取文件中的内容。

二、读取文件内容

使用流提取运算符“>>”读取文件中的内容,每次读取一行。

#include 
#include 
   
using namespace std;

int main()
{
    string filename = "example.txt";
    ifstream ifs;
    ifs.open(filename);

    if(!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return 0;
    }

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

    ifs.close();
    return 0;
}

   
  

使用getline()函数读取文件中的一行,当读到文件结尾或者读取错误时,getline()函数返回false,循环结束。

三、读取文件中的数字

使用流提取运算符“>>”比较简单,但读取文件中的数字需要注意,需要使用C++提供的字符串转数字函数stoi()。

#include 
#include 
   
using namespace std;

int main()
{
    string filename = "example.txt";
    ifstream ifs;
    ifs.open(filename);

    if(!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return 0;
    }

    string line;
    while(getline(ifs,line))
    {
        int num = stoi(line);
        cout << num << endl;
    }

    ifs.close();
    return 0;
}

   
  

四、逐个字符读取文件内容

可以使用流提取运算符“>>”逐个读取文件中的字符。

#include 
#include 
   
using namespace std;

int main()
{
    string filename = "example.txt";
    ifstream ifs;
    ifs.open(filename);

    if(!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return 0;
    }

    char c;
    while(ifs >> c)
    {
        cout << c;
    }

    ifs.close();
    return 0;
}

   
  

这段代码会将文件中的每个字符都读取并输出,但只能读取文本文件,不能读取二进制文件。

五、二进制文件的读取

对于二进制文件的读取,可以使用read()函数从流中读取一定数量的字节。

#include 
#include 
   
using namespace std;

int main()
{
    string filename = "example.bin";
    ifstream ifs;
    ifs.open(filename, ios::binary | ios::in);

    if(!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return 0;
    }

    char data[100];
    ifs.read(data, 100);

    ifs.close();
    return 0;
}

   
  

ios::binary标志表示打开文件为二进制文件。

六、总结

使用C++的ifstream可以简单地读取一个文件的内容,可以按行读取、逐个字符读取、读取二进制文件等。需要注意的是,不同类型的文件需要不同的读取方式。