Нет оператора & quot; & gt; & quot; для std :: string & gt; & stt :: string

У меня проблема, и я не уверен, как ее исправить.

Вот функция поиска, которую я сделал, из которой я получаю ошибку;

void guestSearch()
{
&Reservation::getfirstName;
&Reservation::getlastName;

&Date::getday;
&Date::getmonth;
&Date::getyear;
Hotelreservation reg;
reg.duration;
reg.occupants;
&Contact::getareaCode;
&Contact::getexchange;
&Contact::getline;

system("cls");
cout<<"Enter Line Number for the Guest you are searching for:";
cin>>line;
string line2= to_string(line);
line2.append(".txt");

ifstream filemain(line2);
while(firstName>>lastName>>day>>month>>year>>duration>>occupants>>areaCode>>exchange>>line)
{
int firstNameLength=firstName.size();
int lastNameLength=lastName.size();
int lengthTotal=firstName+lastName;

string result;
cout<< "Is this the correct Guest (y/n)"<<endl;
cout<<"Name"<<firstName<<" "<<lastName<<end;
cin>>result;

if(result=="y")
{
system("cls");
cout<<"Name";
for(int y = 1; y<lengthTotal; y++)
{
cout<< " ";
}
cout<<"Reservation Date";
for(int z=1; z<2; z++)
{
cout<< " ";
}
cout<<"Duration of Stay";
for(int x=1; x<2; x++)
{
cout<< " ";
}
cout<<"Occupants";
for(int u=1; u<2; u++)
{
cout<< " ";
}
cout<<"Contact Number";
for(int v=1; v<2; v++)
{
cout<< " ";
}
}
cout<<"Date Reservation was made:"<<day<<"/"<<month<<"/"<<year<<endl;
cout<<"Duration Of Stay:"<<duration<<endl;
cout<<"Occupants:"<<occupants<<endl;
cout<<"Contact Number:"<<areaCode<<"-"<<exchange<<"-"<<line<<endl;
}
}

Я получаю сообщение об ошибке в то время как объявление после firstName ">>"Я получаю это:

IntelliSense: ни один оператор «>>» не соответствует этим операндам. Типы операндов: std :: string >> std :: string «

0

Решение

Вы неправильно понимаете концепцию, хотя возможно объединить несколько std::string примеры operator >>первый объект должен иметь тип, унаследованный от std::istream такие как ifstream fileman в твоем случае:

while( fileman >> firstName >> lastName >> ... )

это работает, потому что вы можете рассматривать это выражение как:

while( fileman.operator>>( firstName ).operator>>( lastName ) ... )

и потому что std::istream::operator>> возвращает ссылку на std::istream опять же этот цепной вызов работает.

Там нет такого оператора в std::string

1

Другие решения


По вопросам рекламы [email protected]