嗨,我正在尝试使用向量来存储电影列表,但是当我尝试计算电影时,我只得到第一部。我不确定为什么代码会这样做。如果有人可以帮助它会非常感谢。
Movies::Movies(string fn){loadMovies(fn);}
int Movies::getMovieCount() const {return movies.size();}
const Movie * Movies::getMovie(string mc) const {
Movie* p = *movies.data();
for(unsigned int i = 0; i < movies.size(); i++)
{
if(p->getTitle().find(mc) ==string::npos)
{
cout<<string::npos;
printf("test:%d\n",i);
return p;
}
p++;
}
return NULL;
}
Movies::~Movies() {
for(std::vector<Movie*>::const_iterator ptr = movies.begin(); ptr != movies.end(); ptr++)
{
delete *ptr;
}
}
void Movies::loadMovies(string fn) {
ifstream iS(fn); // technically should be c_str
string s;
getline(iS, s); // skip heading
getline(iS, s);
while(!iS.eof()) {
Movie* m = new Movie(s);
movies.push_back(m);
getline(iS, s);
}
iS.close();
sort(movies.begin(), movies.end());
}