0

运行此代码时出现奇怪的结果

void MovieDatabase:: showMovie(const string mtitle){
    cout << "The informations about the" << mtitle << endl;
    for(Movie* cur = headMovie; cur ->next !=NULL; cur= cur->next){
        if(cur -> title == mtitle){
            cout <<"Movie title is "<<  cur ->title << endl;    
            //cout < "The name of director is " << cur -> firstNameOfDirector << endl;
            cout << "The last name of director is " << cur -> lastNameOfDirector <<endl;
            cout << "The year that the movie is released " << cur -> year << endl;
            cout << "The day that the movie is released " << cur -> day << endl;
            cout << "The month that the movie is released " << cur -> month << endl;
        }
    }
    cout << endl;
}

这是我正在检查电影标题的代码,如果它们在链接列表中,我正在打印有关电影的详细信息。但是,作为输出,它只打印以下行

cout << "The informations about the" << mtitle << endl;`

我不明白是什么原因有人可以帮忙吗?

4

2 回答 2

1

有两种可能:

  1. 您的列表中没有标题为 的电影mtitle
  2. 您有一部电影具有该标题,但它是您列表中的最后一部电影。while一旦您到达最后一部电影(其next == NULL)而不检查它,您的循环就会结束。

在不知道您的列表内容的情况下,我们无法知道这里的情况。

于 2012-12-20T15:24:02.827 回答
1

检查以确保您的字符串确实相等,并且其中一个字符串中没有隐藏\r\n尾随空格。

同样如评论中所述,您可能希望循环终止条件为cur != NULLand not cur->next != NULL

于 2012-12-20T15:21:01.167 回答