我在大约一周前问过这个问题。之前所说的话让我陷入了许多问题,因为我忘了提一些东西。
问题是我有一个包含数百行的文本文件:
song_number | song_title | song_release_date || 忽略这一个 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0
数字代表这首歌的音乐类型。如果有1则代表某种类型,如果为0则不代表该类型。例如,(0)的类型对于每首歌曲是相同的并且与其他类型相同。
现在我需要创建一个歌曲类的新实例,其中包含以下参数:
(int song_number,string title,string release_date,vector genres)
我希望在1函数中解析文本文件,该函数创建歌曲类的新实例,然后将其添加到Song类型的向量中。
这个想法是我可以根据歌曲编号访问任何歌曲,所以我可以做类似的事情 songHolder->在(100) - > get_song_title();
谢谢!
答案 0 :(得分:1)
你需要做几件事:
1)定义歌曲类
class Song { /* STUFF */ }
2)定义一个输入(可能还有一个输出迭代器
std::istream& operator>>(std::istream& input, Song& data) { /* STUFF */ }
std::ostream& operator<<(std::ostream& output, Song const& data) { /* STUFF */ }
3)然后你只需要使用流操作符从文件中读取数据。
std::vector<Song> songHolder;
std::ifstream file("FileName");
Song tmp;
while (file >> tmp)
{
songHolder.push_back(tmp);
}
4)现在你应该可以访问载体中的歌曲了:
std::cout << songHolder.at(100).get_song_title();
// or just dump the song
std::cout << songHolder.at(100);