Я пытаюсь записать информацию о песнях в текстовый файл, но ничего не записывается в него. Часть, где я пытаюсь записать информацию в 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;
}
Вы можете разместить сигнатуру функции и как вы вызываете его? Открытие файла приведет к удалению любого существующего содержимого, поэтому я предполагаю, что ваша программа действительно пишет, просто на последней итерации она входит в ветвь 'artist> = nA', а затем просто оставляет файл пустым. – slugonamission
Можете ли вы включить всю функцию и рекурсивный звонок, пожалуйста? – Mureinik
Я только что опубликовал всю функцию – user3866812