Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С++ объявление struct в цикле

714
01 ноября 2008 года
clgs
226 / / 29.10.2008
Вот собственно исходник (точнее его кусок)
Код:
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();
}

Уже перепробывал все(
Проблема заключается в том что в цикле не работает
 
Код:
data *tmp=new data;

Как можно разрешить эту проблему?
11
01 ноября 2008 года
oxotnik333
2.9K / / 03.08.2007
в чем заключается "не работает"?
по идее вот так должно
Код:
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;
    }
714
01 ноября 2008 года
clgs
226 / / 29.10.2008
>в чем заключается "не работает"?
просто игнорируется.

О!.. А так работает. но "delete tmp;" лишнее (у меня закоментированно).
Большое спасибо!..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог