繁体   English   中英

C++ 错误:'std::string' 没有成员

[英]c++ error: 'std::string' has no member

我正在创建一个目录程序,提示用户输入文件名并将文件读入字符串数组。 我的 SearchFirstName 函数有问题。 我收到一个错误:'std::string' 没有名为 'userRecord' 的成员。 我不确定如何解决这个问题,因为声明了 userRecord。

标题

#include<string>
using namespace std;

enum Title {Mr, Mrs, Ms, Dr, NA};

struct NameType {
   Title title;
   string firstName;
   string lastName;
};

struct AddressType {
   string street;
   string city;
   string state;
   string zip;
};

struct PhoneType {
  int areaCode;
  int prefix;
  int number;
};

struct entryType {
  NameType name;
  AddressType address;
  PhoneType phone;
};

const int MAX_RECORDS = 50;

代码

// string bookArray[MAX_RECORDS];
entryType bookArray[MAX_RECORDS];   //Solution
int bookCount = 0;

void OpenFile(string& filename, ifstream& inData)
{
do {
    cout << "Enter file name to open: ";
    cin >> filename;

    inData.open(filename.c_str());

    if (!inData)
        cout << "File not found!" << endl;

} while (!inData);


if(inData.is_open())
{

    for(int i=0; i<MAX_RECORDS;i++)
    {
        inData>> bookArray[bookCount];
        ++bookCount;
    }
}
}


void SearchFirstName(ifstream& inData)
{
   entryType userRecord; // Declaration of userRecord
   string searchName;

   string normalSearchName, normalFirstName;
   char choice;
   bool found = false;

   cout << "Enter first name to search for: ";
   cin >> searchName;

   for(int i = 0; i < bookCount; ++i){

  normalFirstName = NormalizeString(bookArray[i].userRecord.name.firstName);   
 // Convert retrieved string to all uppercase

    if (normalFirstName == normalSearchName) { // Requested name matches
        PrintRecord(bookArray[i].userRecord.name.firstName);
        cout << "Is this the correct entry? (Y/N)";
        cin >> choice;
        choice = toupper(choice);
        cout << endl;

        if (choice == 'Y') {
            found = true;
            break;
        }
    }
}
// Matching name was found before the end of the file
if (inData && !found){
    cout << "Record found: " << endl;
    PrintRecord(userRecord);
    cout << endl;
}
else if (!found)   // End of file. Name not found.
{
    cout << searchName << " not found!" << endl << endl;
}

// Clear file fail state and return to beginning
inData.clear();
inData.seekg(0);
 }
 string bookArray[MAX_RECORDS];

bookArraybookArray类型。它应该是

 entryType bookArray[MAX_RECORDS];

normalFirstName = NormalizeString(bookArray[i].userRecord.name.firstName); 

bookArray[i]不能将userRecord作为成员。 userRecord是您已声明的变量。 它应该是

normalFirstName = NormalizeString(bookArray[i].name.firstName); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM