C++ 使用 Getline

泰勒

我正在创建地址簿程序,但无法正确读取文件。它只读取文件中第一个人的信息,并且具有无限循环。我知道我的GetRecord函数有问题。任何关于如何修复我的代码的建议将不胜感激。

测试文件

Susan, Smith, (123) 456-7890
101 Main Street
Bob, King, (567) 345-9076
456 Market Street

程序代码

void SearchFirstName(ifstream& inData)
{
    Person p;

    string firstName, lastName, phone, address;

    cout << "Enter the first name of the person: ";
    cin >> p.firstname;

    string upperFirst = NormalizeString(p.firstname);
    string upperSearchFirst = NormalizeString(firstName);
    while (GetRecord(inData, firstName, lastName, phone, address))
    {

        if (upperFirst == upperSearchFirst)
        break;

       if(inData){
        cout << "Person found: " << endl;
        PrintRecord(firstName,lastName, phone, address);
    }
    else
    {
    cout << p.firstname << " not found!" << endl << endl;
    }

    inData.clear();
    inData.seekg(0);
  }
 }


bool GetRecord(ifstream& inData,
           string& firstName, string& lastName,
           string& phone, string& address) 
{
    getline(inData, firstName, ',');

    getline(inData, lastName, ',');

    getline(inData, phone, '\n');

    getline(inData, address);
    return inData;

 }

void PrintRecord(string firstName, string lastName,string phone, string address)
 {
     cout << "Name: " << firstName << " " << lastName << endl;
     cout << "Phone: " << phone << endl;
     cout << "Address: " << address << endl;
 }

输出应该是:如果用户在 bob 中按名字和类型进行搜索

Person found:
Name: Bob King
Phone: (567) 345-9076
456 Market Street
穆罕默德·塔亚布

由于我没有你的一些类和函数,所以我注释了额外的代码。您可以在代码中轻松应用此方法。它会起作用。

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

void GetRecord(ifstream& inData,
    string& firstName, string& lastName,
    string& phone, string& address)
{
    getline(inData, firstName, ',');

    getline(inData, lastName, ',');

    getline(inData, phone, '\n');

    getline(inData, address);
}

void PrintRecord(string firstName, string lastName, string phone, string address)
{
    cout << "Name: " << firstName << " " << lastName << endl;
    cout << "Phone: " << phone << endl;
    cout << "Address: " << address << endl;
}
void SearchFirstName(ifstream& inData)
{
    string firstName, firstname, lastName, phone, address;
    cout << "Enter the first name of the person: ";
    cin >> firstname;
    bool flag = false;
    //string upperFirst = NormalizeString(p.firstname);
    //string upperSearchFirst = NormalizeString(firstName);
    while (!inData.eof())
    {
        GetRecord(inData, firstName, lastName, phone, address);
        //if (upperFirst == upperSearchFirst)
            //break;
        if (firstName == firstname)
        {
            flag = true;
        }
        if (flag){
            cout << "Person found: " << endl;
            PrintRecord(firstName,lastName,phone,address);
        }
    }
    if (!flag)
    {
        cout << "RECORD NOT FOUND";
    }
}
int main()
{
    ifstream in("File.txt");
    SearchFirstName(in);
    system("pause");
    return 0;

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中使用getline()

来自分类Dev

在C ++中使用getline()

来自分类Dev

使用char数组的C ++ getline错误

来自分类Dev

使用char数组的C ++ getline错误

来自分类Dev

使用getline从C ++文件中读取数据

来自分类Dev

在C ++中将getline()与文件输入一起使用

来自分类Dev

C ++-在getline中使用变量作为变量名

来自分类Dev

C编程:使用getline后strcmp产生意外结果

来自分类Dev

在C ++中将getline()与文件输入一起使用

来自分类Dev

如何使用getline()检查C字符串的'\ n'字符

来自分类Dev

在C ++中使用getline读取数字和名称?

来自分类Dev

C ++-在getline中使用变量作为变量名

来自分类Dev

使用cin.getline()时C ++程序挂起

来自分类Dev

如何使用getline将值输入C ++中的类?

来自分类Dev

C ++ getline和附加

来自分类Dev

getline c ++需要帮助

来自分类Dev

C ++ fstream getline参数

来自分类Dev

C ++ getline和附加

来自分类Dev

c ++ getline并忽略

来自分类Dev

如何正确使用getline

来自分类Dev

在循环内使用getline

来自分类Dev

如何使用getline infile?

来自分类Dev

getline()函数中的行长-c

来自分类Dev

C,错误:getline的类型冲突

来自分类Dev

C ++中的getline输入错误

来自分类Dev

C ++ getline和cin阅读

来自分类Dev

getline(cin)行为异常(C ++)

来自分类Dev

使用getline,strcpy,strtok C ++加载.txt文件时出现运行时错误

来自分类Dev

C ++错误预期在“'”标记之前的主表达式(在ifstream上使用getline?)