您的位置:

C++读取txt文件每一行

一、从C读取txt文件每一行

C语言提供的文件操作函数可以很方便地读取文本文件。

#include<stdio.h>

int main()
{
    FILE *fp;
    char buffer[1024];
    int index = 0;

    fp = fopen("test.txt","r");
    if(fp == NULL)
        return -1;

    while(fgets(buffer,sizeof(buffer),fp) != NULL)
    {
        printf("Line %d : %s",index+1,buffer);
        index++;
    }

    fclose(fp);
    return 0;
}

代码解析:

① 首先打开文本文件,以只读方式读取,如果文件不存在或没有读取权限,会返回-1。

② 使用fgets函数逐行读取文本内容,读取到文本末尾为NULL。

③ 每次读取一行后,打印当前行号和内容。

④ 关闭文件句柄,释放资源。

二、C++读取txt文件选取3~5个与C读取txt文件每一行相关的做为小标题

C++也提供了文件操作的标准库,使用起来更加便捷。

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

using namespace std;

int main()
{
    ifstream in("test.txt");
    string line;
    vector<string> titles;

    while(getline(in, line))
    {
        titles.push_back(line);
        if(titles.size() == 5)
            break;
    }

    for(int i = 0; i < titles.size(); i++)
        cout << "<h3>" << titles[i] << "</h3><br/>" << endl;

    in.close();
    return 0;
}

代码解析:

① 打开文本文件,以输入流方式读取。

② 使用getline函数逐行读取文本内容,每读取一行就将其作为一个小标题保存到字符串容器中。

③ 如果小标题数量达到5个,则退出循环。

④ 遍历小标题容器,输出每个小标题作为html的h3标签。

⑤ 关闭文件流,释放资源。

三、C++读取txt文件每一行的内容

C++标准库提供了多种读取文件的方式,我们可以选择getline或者fstream::read函数来读取文本文件的内容。

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

using namespace std;

int main()
{
    ifstream in("test.txt");
    string line;

    while(getline(in, line))
        cout << line << endl;

    in.close();
    return 0;
}

代码解析:

① 打开文本文件,以输入流方式读取。

② 使用getline函数逐行读取文本内容,将每行内容直接输出。

③ 关闭文件流,释放资源。

fstream::read函数读取文本内容的方式:

#include<iostream>
#include<fstream>

using namespace std;

inline int get_count(ifstream& in)
{
    in.seekg(0, std::ios_base::end);
    return in.tellg();
}

int main()
{
    ifstream in("test.txt",ios_base::binary);
    int count = get_count(in);
    char* buffer = new char[count];

    in.seekg(0, ios_base::beg);
    in.read(buffer, count);

    cout << buffer << endl;

    delete [] buffer;
    in.close();
    return 0;
}

代码解析:

① 打开二进制文件,以输入流方式读取。

② 获取文件总长度。

③ 开辟一个char类型数组,并将其长度设置为文件总长度。

④ 将文件指针定位到文件头部,并将文件内容都读入到char类型数组中。

⑤ 将数组中的内容输出到控制台。

⑥ 释放动态开辟的内存,关闭文件流。