C++ 我的电影数据库C+;需要帮助搜索功能+;

C++ 我的电影数据库C+;需要帮助搜索功能+;,c++,search-engine,linear-search,C++,Search Engine,Linear Search,我的电影数据库有点问题,我的搜索功能不起作用。 我是一个完全的初学者,已经获得了网络的搜索功能,但它不会搜索 这是我的密码 #include <iostream> #include <vector> #include <sstream> // För att kunna använda sig av getline() #include <string> // För att kunna använda sig av getline() #incl

我的电影数据库有点问题,我的搜索功能不起作用。 我是一个完全的初学者,已经获得了网络的搜索功能,但它不会搜索

这是我的密码

#include <iostream>
#include <vector>
#include <sstream> // För att kunna använda sig av getline()
#include <string> // För att kunna använda sig av getline()
#include <algorithm>

using namespace std;

class Film
{
public:
    string Titel;
    string Typ;

// FUNKTION: Skriver ut filmens titel och typ
    void skrivUtFilm()
    {
        cout << endl;
        cout << "Titel: " << Titel << endl; // Skriver ut filmens titel
        cout << "Typ: " << Typ << endl; // Skriver ut filmens typ
    }
};

int main()
{
    vector<Film> Databas;             // Skapa en vektor av typen Film

    Film nyFilm;                    // För att kunna skapa en film behöver vi kunna spara den

    while (true)
    {
        // Skriver ut menyn:
        cout << " === FILMDATABAS === " << endl;
        cout << "1: Registera en ny film"   << endl;
        cout << "2: S\x94k efter en film"   << endl;
        cout << "3: Skriv ut filmlistan"    << endl;
        cout << "0: Avsluta"    << endl;
        cout << "Ange ditt val: ";

        char menySelection; // Användarens val
        cin >> menySelection;


        if (menySelection == '1') // Registerar nya filmer
        {
            cin.get();
            cout << "\n\n1: Registrera en ny film\n";
            cout << "Vad \x84r filmens Titel: ";
            getline(cin, nyFilm.Titel);

            cout << "\x8er filmen p\x86 DVD eller BluRay? ";
            getline(cin, nyFilm.Typ);
            cout << endl;

            // Vi lägger vårt filmobjekt i vektorn
            Databas.push_back( nyFilm );
        }
        else if (menySelection == '2') // Söker efter filmer som användaren har lagt till
        {
            cin.get();
            cout << "\nS\x94k efter filmer i databasen: \n\n";
            string objekt;
            getline(cin, objekt);
            cout << endl;

            vector<Film>::iterator it;

            it = find_if(Databas.begin(), Databas.end(),[&] ( const Film &f )
            {
                return ( f.Titel == objekt);
            });
        }
        else if (menySelection == '3') // Skrivet ut alla filmer i Filmarkivet
        {
            cout << "\n=========\n";
            cout << "Filmlistan\n";
            for(int i=0; i<Databas.size(); i++)
            {
                Databas[i].skrivUtFilm(); // Skriver ut dem med hjälp av skrivUtFilm();
            }
            cout << "\n=========\n";
            cout << "\n\nTryck p\x86 ENTER f\x94r att \x86terv\x84nda till menyn.\n\n";
            cin.get();
        }
        else if (menySelection == '0') // Avslutar programmet
        {
            break;
        }
        else   
        {
            cout << "Ogiltigt val!\n." << endl;
        }
    }
    cin.get();
    return 0;
}
#包括
#包括
#包括//För att kunna använda sig av getline()
#包括//För att kunna använda sig av getline()
#包括
使用名称空间std;
班级电影
{
公众:
弦滴度;
字符串类型;
//功能:Skriver ut filmens滴度och类型
void skrivUtFilm()
{

当你找到这部电影时,你什么都不用做

在搜索功能之后,您应该添加如下内容:

if (it != Databas.end()) {
    it->skrivUtFilm();

} else {
    cout << "No film found" << endl;

}
if(it!=database.end()){
it->skrivUtFilm();
}否则{

什么不起作用?你没有检查find_返回的迭代器,如果是的话,它可能工作得很好,你也不知道。线性搜索只是在向量中进行迭代,并与标题进行比较。不难。不起作用的是在我使用选项1注册了一部电影之后,我想在选项2中搜索它,但是n我已经编写了类型或标题,然后按enter键,它只会返回到再次显示菜单,而不返回有关电影/类型的任何信息。我不知道我是否使用了错误的代码来完成我想做的事情。正如我所说,你没有对从搜索中获得的数据执行任何操作。你需要使用迭代器
find\If
以某种方式返回。非常感谢LPCs的帮助,它现在可以正常工作了,非常感谢您花时间帮助我:)