逐行读取文件

时间:2016-08-29 09:53:34

标签: c++ file

我需要逐行读取文件并将其打印在屏幕上:

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

using namespace std;

int main()
{   
    ofstream out("note.txt");
    for (int i = 0; i < 10; i++)
        out << i << " " << (i<<1) << "\n";
    out.close();


    ifstream fin;
    fin.open("note.txt");

    string line;
    for (int i = 0; i < 10; ++i)
    {   
        getline(fin, line);
        cout << line << "\n";
    }
    return 0;
}

这种做法是否正确?不能没有字符串变量(代码中没有字符串)吗?

2 个答案:

答案 0 :(得分:3)

您可以使用while循环代替使用for循环:

char buf[1024]

如果您被迫不使用字符串,则可以尝试使用char缓冲区1024。必须指出的是,这种方法很危险且容易出错。如果某行的字符数超过buffer overflow,则会出现vulnerabilities。缓冲区溢出是许多crashes和{{1}}的原因。话虽这么说,如果你真的必须使用这种方法,我建议你做一些适当的检查要非常小心。

答案 1 :(得分:3)

逐字复制文件就像流式传输其缓冲区一样简单:

ifstream fin;
fin.open("note.txt");

std::cout << fin.rdbuf();