Почему это не записывает в файл и почему это не производит правильное количество пунктов меню?Ncurses - PullRequest
0 голосов
/ 26 марта 2012
void init_song_menu(vector<Song>& songs){
  int nsongs = (int) songs.size();
  ITEM** items = (ITEM **)calloc(nsongs, sizeof(ITEM *));
  ofstream file("songs.txt");
  file << flush;
  printw("%d  ",nsongs);
  for(int i = 0; i < nsongs; ++i){
    string choice;
    stringstream out;
    out << i;
    out << " ";
    out << songs.at(i).get_ID3().title;
    choice += out.str();
    file << out.str().c_str();
    file <<"\n"<<flush;
    char* cpy = new char[choice.size()+1];
    strcpy(cpy, choice.c_str());
    choices.push_back(cpy);
    items[i] = new_item(cpy," ");
  }
  file.close();
  items[nsongs-1] = new_item((char *)NULL, NULL);
  LSTWINDOW* menu_win = new LSTWINDOW;
  menu_win->win = newwin(LINES-2,COLS,2,COLS/4);
  menu_win->menu = new_menu((ITEM **)items);
  printw("%d", item_count(menu_win->menu));
  set_menu_win(menu_win->menu,menu_win->win);
  set_menu_sub(menu_win->menu,derwin(menu_win->win,LINES-4,70 ,0,0));
  set_menu_format(menu_win->menu,LINES-6,1);
  set_menu_mark(menu_win->menu,"*");
  wlist.push_back(menu_win->win);
  focused = menu_win;
  menu_opts_off(menu_win->menu,O_SHOWDESC);
}

Я знаю, что файл открыт, и я закрываю файл.Тем не менее, файл даже не создается, и даже когда я попытался создать файл для него, он все еще не записал.Причина, по которой я пишу в файл, состоит в том, чтобы помочь отладке, почему создается только определенное количество пунктов меню.choices - это глобальный вектор, указанный в верхней части файла.

...