Ceci est la dernière partie du programme sur lequel je travaille. Je veux sortir une liste tabulaire de chansons à cout. Et puis je veux sortir une liste spécialement formatée d'informations sur les chansons dans fout (qui sera utilisée comme fichier d'entrée plus tard).C++ - Caractères indésirables imprimés dans le fichier de sortie
L'impression sur cout fonctionne très bien. Le problème est que des tonnes de caractères supplémentaires sont ajoutés lors de l'impression à fout.
Des idées?
Voici le code:
void Playlist::printFile(ofstream &fout, LinkedList<Playlist> &allPlaylists, LinkedList<Songs*> &library)
{
fout.open("music.txt");
if(fout.fail())
{
cout << "Output file failed. Information was not saved." << endl << endl;
}
else
{
if(library.size() > 0)
fout << "LIBRARY" << endl;
for(int i = 0; i < library.size(); i++) // For Loop - "Incremrenting i"-Loop to go through library and print song information.
{
fout << library.at(i)->getSongName() << endl; // Prints song name.
fout << library.at(i)->getArtistName() << endl; // Prints artist name.
fout << library.at(i)->getAlbumName() << endl; // Prints album name.
fout << library.at(i)->getPlayTime() << " " << library.at(i)->getYear() << " ";
fout << library.at(i)->getStarRating() << " " << library.at(i)->getSongGenre() << endl;
}
if(allPlaylists.size() <= 0)
fout << endl;
else if(allPlaylists.size() > 0)
{
int j;
for(j = 0; j < allPlaylists.size(); j++) // Loops through all playlists.
{
fout << "xxxxx" << endl;
fout << allPlaylists.at(j).getPlaylistName() << endl;
for(int i = 0; i < allPlaylists.at(j).listSongs.size(); i++)
{
fout << allPlaylists.at(j).listSongs.at(i)->getSongName();
fout << endl;
fout << allPlaylists.at(j).listSongs.at(i)->getArtistName();
fout << endl;
}
}
fout << endl;
}
}
}
Voici un exemple de sortie à music.txt (fsort):
LIBRARY
sadljkhfds
dfgkjh
dfkgh
3 3333 3 Rap
sdlkhs
kjshdfkh
sdkjfhsdf
3 33333 3 Rap
xxxxx
PayröÈöè÷÷(÷H÷h÷÷¨÷È÷èøø(øHøhøø¨øÈøèùù(ùHùhùù¨ùÈùèúú(úHúhúú¨úÈúèûû(ûHûhûû¨ûÈûèüü(üHühüü¨üÈüèýý(ýHýhý
! sdkjfhsdf!õüöýÄõ¼5!
sadljkhfds!þõÜö|ö\
þx þ þÈ þð ÿ ÿ@ ÿh ÿ ÿ¸ ÿà 0 X ¨ Ð ø
enter code here
enter code here
... ou un pointeur qui pend (pour empiler, dans la mémoire qui a été libérée, la mémoire qui a été déplacée [par exemple réaffectée]), ou ils retournent un 'std :: string' construit à partir d'un tel pointeur. – vladr
Comment puis-je résoudre ce problème? – Gabe
@Gabe Renvoie simplement une chaîne char * terminée par null valide ou utilise std :: string. –