ifstream i objekt får noget vrøvl i mit array
jeg har følgende kode i min .h fil (lidt forkortet - sig hvis jeg mangler noget der skal bruges):#include <iostream>
#include <fstream>
#include <string>
const int MAX_LENGTH = 32767; // 65536;
using namespace std;
class CRecordReplay
{
public:
CRecordReplay();
~CRecordReplay();
void GetNewLine(char* FileName, char* Time);
private:
unsigned int uiPosition;
CString CSRecordValue;
ifstream inFile;
char LineInMem[MAX_LENGTH];
string ArrayOfValues[MAX_LENGTH];
string sFileNameOld;
string sFileNameOldChanged;
};
og følgende i min .cpp fil (også bare et udpluk)
void CRecordReplay::GetNewLine(char* FileName, char* Time)
{
LineInMem[0] = NULL;
string sTime = Time;
string sFileName = FileName;
int iComp;
iComp = sFileName.compare(sFileNameOld);
sFileNameOld = sFileName;
if (iComp != 0)
Replace(sFileName,'\\','/'); //FileName har formatet "C:\xxx\zzz\yyy.csv"
if(!inFile.is_open())
{
inFile.close(); //Making sure that an old file would be closed if it was open
string filename_in = "Test";
inFile.open(sFileName.c_str());
if (!inFile)
{
CSRecordValue = filenotok; //const string
}
}
else
{
inFile.getline(LineInMem, MAX_LENGTH);
}
}
}
i LineInMem får jeg noget "sludder" - jeg tror at det er et udefineret memory område... Det kan jeg se når jeg kører i debugger.
Filen indeholder på hver linie formatet HH:MM:SS,blabla1,blabla2,0,0,1,1,
hvor HH:MM:SS er et klokkeslet. Antalet af blablaer og tal er forskelligt fra fil til fil.
Grunden til at jeg ikke lukker filen er at jeg skal bruge den næste linie i rækken næste gang GetNewLine() bliver kaldt. Filen bliver lukket når objektet destrueres.
- er der nogen der kan forklare mig hvorfor det her ikke virker og hvad jeg skal gøre i stedet?