我正在尝试读取仅包含字符串的文本文件。它正在编译和打开,但在阅读时只显示与文件中的字符无关的垃圾。
有人能看出什么问题吗?
#include <iostream>
#include <fstream>
using namespace std;
fstream myfile;
char* input;
void main(void)
{
myfile.open("H://fstream_test.txt", fstream::in);
if(myfile.fail())
{
cout<<"error"; exit(0);
}
cout<<"file is open";
int beginning = myfile.tellg();
myfile.seekg(0, fstream::end);
int end = myfile.tellg();
int size = end-beginning;
cout<<size; //returns 15
input = new char[size];
myfile.read(input,size);
cout<<input;
//returns junk
//for(int i=0;i<size;i++)
//cout<<input[i];
//returns the same;
}
结束编辑为:
input = new char[size];
myfile.seekg(0, fstream::beg);
while(!myfile.eof())
{
myfile.read(input,size);
}
cout<<input;
system("pause");
答案 0 :(得分:2)
在尝试阅读之前,您会找到文件的末尾:
myfile.seekg(0, fstream::end);
要做到这一点,你必须首先寻求开始。
另请注意,myfile.read()
不会附加NUL终止符。