struct data {
string num, fio, date, info;
};
struct zveno_cur { // указатель
zveno *row, *first, *last, *next, *back;
data *info;
};
void _file_read(zveno_cur *&cur) { // Чтение файла и создание структуры
ifstream fr("project.txt"/*,ios::in*/);
fr.unsetf(ios::skipws); //remove the property of ignoring spaces
char ch; int tab=0, NLine=0, NString=1;
//data *tmp=new data;
cout << "\nRead file...\n";
fr>>ch;
while(!fr.eof()) {
if(NString==1) data *tmp=new data;
NString=0;
if(ch=='\t') tab++;
if(ch=='\n') NLine=1;
if(NLine==1) {
tab=0; NLine=0; NString=1;
cout << tmp->num << ' ' << tmp->fio << ' ' << tmp->date << ' ' << tmp->info << '\n';
_struct_addZ(cur,tmp); // добавляем после текущего
_struct_step(cur,cur->first); // переход указателя в позицию
//delete tmp;
//data *tmp=new data;
}
if(tab==0) tmp->num+=ch;
else if(tab==1) tmp->fio+=ch;
else if(tab==2) tmp->date+=ch;
else if(tab==3) tmp->info+=ch;
fr>>ch;
}
//delete tmp;
fr.close();
}
С++ объявление struct в цикле
Код:
Уже перепробывал все(
Проблема заключается в том что в цикле не работает
Код:
data *tmp=new data;
Как можно разрешить эту проблему?
по идее вот так должно
Код:
data *tmp=NULL;
cout << "\nRead file...\n";
fr>>ch;
while(!fr.eof()) {
if(NString==1)
tmp=new data;
NString=0;
if(ch=='\t') tab++;
if(ch=='\n') NLine=1;
if(NLine==1) {
tab=0; NLine=0; NString=1;
cout << tmp->num << ' ' << tmp->fio << ' ' << tmp->date << ' ' << tmp->info << '\n';
_struct_addZ(cur,tmp); // добавляем после текущего
_struct_step(cur,cur->first); // переход указателя в позицию
delete tmp;
tmp=new data;
}
cout << "\nRead file...\n";
fr>>ch;
while(!fr.eof()) {
if(NString==1)
tmp=new data;
NString=0;
if(ch=='\t') tab++;
if(ch=='\n') NLine=1;
if(NLine==1) {
tab=0; NLine=0; NString=1;
cout << tmp->num << ' ' << tmp->fio << ' ' << tmp->date << ' ' << tmp->info << '\n';
_struct_addZ(cur,tmp); // добавляем после текущего
_struct_step(cur,cur->first); // переход указателя в позицию
delete tmp;
tmp=new data;
}
просто игнорируется.
О!.. А так работает. но "delete tmp;" лишнее (у меня закоментированно).
Большое спасибо!..