the "addsong" function working, i just dont know how to tell the compiler to skip over elements in the vectors with empty strings, when writing the new data to the music_library file. this is because i have to write a remove song function where, after the song is removed, the location of that songs data (within a vector) will be replaced with an empty string.
here's my code:
#include <iostream> // For input and output to the monitor
#include <fstream> // For file input and output (given)
#include <string> // For text data
#include <vector> // library for using vectors
using namespace std; // To make is easier put this in global namespace
void addsong(vector<string>&, vector<string>&, vector<string>&);
// function: this adds songs to the library
// parameters: string title, string artist, string genre
// functionality: prompts the user for the parameters and checks to make sure
// the song isn't already in the library
int main()
{
vector<string> titles;
vector<string> artists;
vector<string> genres;
ifstream in_stream;
in_stream.open("music_library.txt");
int i=1;
if (in_stream.fail( ))
{
cout << "Unable to open file.\n";
}
else
{
string title, artist, genre;
while(!in_stream.eof())
{
if((i%3==1)||i==1)
{
getline(in_stream, title);
titles.push_back(title);
i++;
}
if((i%3==2)||i==2)
{
getline(in_stream, artist);
artists.push_back(artist);
i++;
}
if((i%3==0)||i==3)
{
getline(in_stream, genre);
genres.push_back(genre);
i++;
}
}
}
cout << "Titles size: " << titles.size() << endl;
cout << "Artist size: " << artists.size() << endl;
cout << "Genre size: " << genres.size() << endl;
int choice;
do
{
cout << "\n\n1. Add a new song\n";
cout << "2. Remove an existing song\n";
cout << "3. Search for a song\n";
cout << "4. Quit program\n";
cin >> choice;
switch(choice)
{
case 1: //user wants to add a song
addsong(titles, artists, genres);
break;
case 2: //user wants to remove an existing song
break;
case 3: //user wants to search for a song
break;
case 4: //user wants to quit program
cout << "GOODBYE!\n";
break;
}
}while(choice !=4);
cin.get();
in_stream.close( );
return 0;
}
void addsong(vector<string>& titles, vector<string>& artists, vector<string>& genres)
{
ofstream in_stream;
in_stream.open("music_library.txt", ios::app);
string t_title, a_artist, g_genre;
if(in_stream.fail( ))
{
cout << "File failed to open." << endl;
}
cout << "Enter the title name: " << endl;
cin.ignore(100, '\n');
getline(cin, t_title);
titles.push_back(t_title);
cout << "Enter the artist name: " << endl;
getline(cin, a_artist);
artists.push_back(a_artist);
cout << "Enter the genre: " << endl;
getline(cin, g_genre);
genres.push_back(g_genre);
for(unsigned int i = 0; i < titles.size(); ++i)
{
if(t_title.compare(titles[i]) !=0&&(a_artist.compare(artists[i])!=0))
{
cout << "Items have been added to library" << endl;
titles.push_back(t_title);
artists.push_back(a_artist);
genres.push_back(g_genre);
in_stream << endl << t_title << endl << a_artist << endl << g_genre << endl;
return;
}
else
cout << "Item exist!" << endl;
return;
}
in_stream.close( );
}