Phone number lookup within text file

我是研究僧i 提交于 2019-12-13 11:02:30

问题


Basically My Program Goal is that i have a file containing 4 telephone numbers it would Look Like this

Harry Keeling (555)123-4567
Frank James (555)123-8901
Arthur Paul (555)987-4567
Todd Shurn (555)987-8901

What my program is doing right now is prompting the user for the name and last name and iterates through the file to see if their is a match if their is a match the phone number is saved in the variable phone number if their isnt a match the program outputs error right now my program is doing what is susposed to do but after each match is found the program is susposed to prompt do you want to continue looking up numbers y or n if it is a yes it is susposed to loop through the file again but basically my program isnt working and i have no idea why my code

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void lookup_name(ifstream&, string&);  // prototype
int main()
{
    ifstream myfile;
    string phonenumber;
    string choice;
    lookup_name(myfile, phonenumber);
    if (phonenumber == " ") {
        cout << "Error" << endl;
    }
    else {
        cout << "The Telephone Number you Requested is" << phonenumber <<    endl;
        cout << "Do you Want to look up another name in the directory?" << " " << "<Y/N" << endl;
        cin >> choice;
        if (choice == "Y")
            lookup_name(myfile, phonenumber);
    }
}
void lookup_name(ifstream& myfile, string& phonenumber)
{
    string fname;
    string lname;
    string name1, name2, dummy, choice;
    myfile.open("infile.txt");
    cout << "What is your first name" << endl;
    cin >> fname;
    cout << "What is your last name" << endl;
    cin >> lname;
    for (int i = 0; i < 4; i++) {
        myfile >> name1 >> name2;
        if (fname + lname == name1 + name2) {
            myfile >> phonenumber;
            myfile.close();
            if (choice == "Y")
            {
                continue;
            }
            else {
                myfile >> dummy;
            }
    }


    }
}

回答1:


You need to add a loop inside of main() itself to prompt the user to continue, and you need to fix the mistakes in your lookup_name() function.

Try something more like this instead:

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <limits>

using namespace std;

bool lookup_name(istream&, const string&, string&);  // prototype

int main()
{
    ifstream myfile("infile.txt");

    string name, phonenumber, choice;

    do
    {
        cout << "What is the name? ";
        getline(cin, name);

        if (!lookup_name(myfile, name, phonenumber)) {
            cout << "Error" << endl;
        }
        else {
            cout << "The Telephone Number you Requested is '" << phonenumber << "'" << endl;
        }

        cout << "Do you want to look up another name in the directory (Y/N)? ";
        cin >> choice;
        cin.ignore(numeric_limits<streamsize_t>::max(), '\n');

        if ((choice != "Y") && (choice != "y"))
            break;

        myfile.seekg(0);
    }
    while (true);

    return 0;
}

bool lookup_name(istream& myfile, const string& name, string& phonenumber)
{
    string line, fname, lname;

    while (getline(myfile, line))
    {
        istringstream iss(line);
        if (iss >> fname1 >> lname)
        {
            if (name == (fname + " " + lname))
                return getline(iss, phonenumber);
        }
    }

    return false;
}


来源:https://stackoverflow.com/questions/42984196/phone-number-lookup-within-text-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!