我需要逐行读取文件并将其打印在屏幕上:
#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;
}
这种做法是否正确?不能没有字符串变量(代码中没有字符串行)吗?
答案 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();