so this function is working correctly (as far as i know) but the only thing that i haven't quite figured out yet is how to send the new input, and completely overwrite the existing "in_stream" file.
this program opens a file (containing song titles, artists, and their genres) when the file opens the different data types are sent to their specific vectors. the part that i'm currently working on is where the program asks the user to add songs to the library. they cannot be added to the library if the input matches something already in the file (they can have the same song titles, but must have different artist names). if the input is not already existing, the new data should be added to the vectors. after the users quits the program to the data in the vectors should be written back to the file (if the string is empty it should be skipped).
this is 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;
ofstream out_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);
in_stream.close( );
out_stream.close( );
return 0;
}
void addsong(vector<string>& titles, vector<string>& artists, vector<string>& genres)
{
ifstream in_stream;
in_stream.open("music_library.txt");
string t_title, a_artist, g_genre;
cout << "Enter the title name: " << endl;
cin.ignore(100, '\n');
getline(cin, t_title);
cout << "Enter the artist name: " << endl;
getline(cin, a_artist);
cout << "Enter the genre: " << endl;
getline(cin, 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);
return;
}
else
cout << "Item exist!" << endl;
return;
}
in_stream.close( );
}