Как найти введенное пользователем слово и распечатать результаты? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу попросить пользователя найти имя автора или год книги.Как только они это сделают, я хочу, чтобы он распечатал все найденные результаты.

Я включил случай переключения, открыл файл, даже включил там функцию поиска.Но моя функция поиска, кажется, не работает, и я не могу сказать, почему.

Если вы можете взглянуть на мою функцию поиска.Может быть, вы могли бы обнаружить ошибку, которую я не могу найти?

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;

int main()
{
    ifstream input("C:/Users/mziad/Desktop/School/C++/HW2/bestsellers.txt");
string line;
vector <string> v;
string temp;
int index, prev;
int i;

if (input.is_open())
{
    while (!input.eof())
    {
        int data;
        getline(input, line);
        v.push_back(line);
    }
}
    char choice;
    int x, y;
    string m, n;
    string author, title;
    while (1)
    {
        cout << "What would you like to do?" << endl;
        cout << "1: Look up year range" << endl;
        cout << "2: Look up month / year" << endl;
        cout << "3 : Search for author" << endl;
        cout << "4 : Search for title" << endl;
        cout << "Q: Quit" << endl;
        cin >> choice;

        switch (choice)
        {
        case '1':
            cout << "Enter beginning year: ";
            cin >> x;
            cout << "Enter ending year: ";
            cin >> y;
            break;
        case '2':
            cout << "Enter month (as a number, 1-12): ";
            cin >> m;
            cout << "Enter year: ";
            cin >> n;
            break;
        case '3':
            cout << "Enter an author's name (or part of a name): ";
            cin >> author;
            break;
        case '4':
            cout << "Enter a title (or part of a title): ";
            cin >> title;
            break;
        case 'Q':
            exit(0);
        default:
            cout << "Invalid choice\n";
        }

        bool isFound = 0;
        while (!input.eof())
        {
            string temp = "";
            getline(input, temp);
            for (int i = 0; i < line.size(); i++)
            {
                if (temp[i] == line[i])
                    isFound = 1;
                else
                {
                    isFound = 0;
                    break;
                }
            }

            if (isFound)
            {
                cout << "Your Search Query: ";
                for (int i = line.size() + 1; i < temp.size(); i++)
                    cout << temp[i];
                break;
            }
        }
        if (input.eof() && (!isFound))
        {
            cout << "Name not found!\n";
        }

        input.close();
    }
}

Я хочу, чтобы она искала пользовательские входы и возвращала результаты.Он просто говорит «Имя не найдено» или возвращается к параметрам без вывода результатов.

...