64,645
社区成员
发帖
与我相关
我的任务
分享
void readType(std::ifstream &v, T *foo)
{
if(!v.good())
std::cout<< "Attention! Ifstream is not good"<< std::endl;
else
std::cout<< "Attention! Ifstream is good"<< std::endl;
//v.read((char *)foo, sizeof(T));
v.readsome((char *)foo, sizeof(T));
std::cout<<v.gcount()<<" bit has been read"<<endl;
if(v.eof()) std::cout<< "ERROR: EOF" <<std::endl;
if(v.bad()) std::cout<<"ERROR: badbit" <<std::endl;
if(v.fail()) std::cout<<"ERROR: failbit" <<std::endl;
}
for (int i = 0; i < NumDOFS; ++i)
{
char len;
readType(v, &len);
char * buffer_DOFlabel = new char[len];
v.read(buffer_DOFlabel, len);
DOFlabels.push_back(string(buffer_DOFlabel));
delete [] buffer_DOFlabel;
}
for (int i = 0; i < NumDOFS; ++i) {
unsigned char len=0x1A;
readType(v, &len);
if (VDEBUG) cout << "DOFlabel " << i << "'s length: " << (int)(len) << endl;
char * buffer_DOFlabel = new char[(int)len];
if (VDEBUG) cout<<"buffer before "<<v.tellg()<<endl;
int prepos=v.tellg();
if (VDEBUG) cout<<"The len is "<<(int)len <<endl;
v.read(buffer_DOFlabel, (int)len);
if (VDEBUG) cout<<"buffer after "<<v.tellg()<<endl;
DOFlabels.push_back(string(buffer_DOFlabel));
//v.seekg(len, std::ios_base::cur);
v.seekg(prepos + (int)len,std::ios_base::beg);
if (VDEBUG) cout<<"buffer after t "<<v.tellg()<<endl;
delete [] buffer_DOFlabel;
if (VDEBUG) cout << "DOFlabel " << i << "'s contents: " << DOFlabels[i] << endl;
}
void readType(std::ifstream &v, T *foo)
{
char len;
readType(v, &len);
v.readsome((char *)foo, sizeof(T));
读文件要遵循如下格式:
read();
while(!feof())
{
cout<<buffer<<endl;
read();
}