我正在嘗試將歌曲信息寫入文本文件,但沒有任何內容正在寫入。我正在嘗試將信息寫入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 2014-12-06 16:36:06
您可以包含整個函數和遞歸調用嗎? – Mureinik 2014-12-06 16:36:14
我剛剛發佈了整個功能 – user3866812 2014-12-06 16:42:18