我的代码打开一个文本文件,计算行数,分配一个数组来存储所有行,然后调用一个函数来用每一行填充这个数组。此函数 file.getline 调用返回空字符串:
这是代码:
typedef char* line;
...
char* filename=new char[256];
cout << "Type a file name: " << endl;
cin.ignore();
cin.getline(filename,255);
ifstream iFile(filename);
int nLines=CountLines(iFile);
line* LineArray = new line[nLines];
ReadLines(LineArray,iFile);
计数线函数:
int CountLines(ifstream &file)
{
line templine=new char[64];
int nLines=0;
while (!file.eof())
{
file.getline(templine,64);
if (*templine != '\n')
nLines++;
}
delete [] templine;
return nLines;
}
这工作正常。然而,ReadLines 不会:
void ReadLines(line* LineArray, ifstream &file)
{
line templine=new char[64];
file.seekg(0,ios::beg);
int i = 0;
while (!file.eof())
{
if (*templine != '\n')
{
LineArray[i]=templine;
i++;
}
}
delete [] templine;
}
我感觉它与 getline 的 '\n' 问题有关,但是当我将 get 指针设置为 0 并且文件以普通文本而不是行开头时,我不明白为什么它会用空字符串。