私のコードは、テキストファイルを開き、行数をカウントし、すべての行を格納する配列を割り当ててから、この配列を各行で埋める関数を呼び出します。この関数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);
CountLines関数:
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に設定すると、ファイルが行ではなく通常のテキストで始まるため、templineがでいっぱいになる理由がわかりません。空の文字列。