Я пытаюсь записать информацию о песнях в текстовый файл, но ничего не записывается. Часть, где я пытаюсь записать информацию в onF, выполняется, но файл пуст. Кстати, приведенный ниже код является частью рекурсивной функции, которая является причиной первых нескольких операторов if. Есть идеи?
void writeToFile(int artist, int album, int song, int nA, int nAl, int nS)
{
ofstream onF("library.txt");
if(song>=nS)
{
album+=1;
song = 0;
}
if(album>=nAl)
{
artist++;
album = 0;
song = 0;
}
if(artist>=nA)
{
onF.close();
return;
}
if(onF.is_open())
{
onF<<artists[artist].artistName<<'#';
onF<<artists[artist].albums[album].albumName<<'#';
onF<<artists[artist].albums[album].songs[song].songName<<'#';
onF<<artists[artist].albums[album].songs[song].songLength<<endl;
cout<<"RAN"<<endl;
}
else
cout<<"File could not be opened."<<endl;
song++;
int numAlbums = artists[artist].numAlbums;
int numSongs = artists[artist].albums[album].numSongs;
writeToFile(artist, album, song, nA, numAlbums, numSongs);
}
Теперь, когда у меня есть работа, у меня возникли проблемы с загрузкой информации из файла. Он дважды загружает информацию о песне во второй раз, загружая все, кроме названия песни. Цикл выполняется дважды:
if(inF)
{
while(!inF.eof())
{
getline(inF, newArtist, '#');
getline(inF, newAlbum, '#');
getline(inF, newSong, '#');
inF>>songLength;
cout<<"CALLED"<<endl;
addSong(newArtist, newAlbum, newSong, songLength, numArtists, 0, 0);
}
inF.close();
if(inF.is_open())
cout<<"FAILED TO CLOSE"<<endl;
}
Вы усекаете файл при входе в функцию, поэтому последний вызов стирает все, что было написано.
Если вы хотите добавить, добавьте флаг std :: ios :: app
artist >= nA
а затем просто оставляет файл пустым.