不懂 (*it).name.find(name) 和 (*it).name.length()) 这两个分别的意思
void FindBook()
{
string name;
cin >> name;
for (list::iterator it = BList.begin(); it != BList.end(); it++)//遍历整个list,所以符合关键字的都会被找到
{
int index = (*it).name.find(name);//如果没找到返回值是一个很大的数
if (index < (*it).name.length())
(*it).Show();
}
}
it代表list中的每一个Book对象。
( * it).name.find(name)就是判断每个Book对象的name变量中,是否包含要搜索的书名。
( * it).name.length() 是获取Book对象name变量的长度,然后find搜索的结果比长度小,说明能够找到书名,则输出该Book对象的详细信息
你不好理解就是因为命名不规范,( * it).name.find(name)前面一个name是BOOK的变量,后面一个是你输入的。改成( * it).bookName.find(name)会好些。