So I have a .txt file that I'm pushing into a vector, and that's worked all right. I'm trying to take user input (string), and find a match in the vector. This i my code so far:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <list>
using namespace std;
struct customer{
string name;
float disc;
};
class customer_list {
vector<customer> custlist;
public:
void load(string fname){
ifstream list;
list.open ("customers.txt");
customer c;
double val = 0;
if (list.is_open()){
while (! list.eof() ){
list >> c.name;
custlist.push_back(c);
list >> c.disc;
custlist.push_back(c);
val++;
}
}
list.close();
int val2 = custlist.size()/val;
for (int j=0; j < custlist.size() - 2; j+= val2){
cout << " Name: " << custlist[j].name << endl;
cout << " Discount: " << custlist[j+1].disc << endl;
}
}
bool in_list(string & query){ //return true if query in list, false otherwise
if (find (custlist.begin(), custlist.end(), query) !=custlist.end()){
cout << "Welcome back," << query << "." <<endl;
return true;
}else{
cout << "No Matches found." << endl;
return false;
}
}
};
int main (){
customer_list a;
string name;
a.load("customers.txt");
cout << "What is your name?" << endl;
cin >> name;
a.in_list(name);
}
I get this error when run:
In file included from prt2.cpp:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:865:22: error: invalid operands
to binary expression ('customer' and 'const std::__1::basic_string<char>')
if (*__first == __value_)
~~~~~~~~ ^ ~~~~~~~~
prt2.cpp:46:15: note: in instantiation of function template specialization 'std::__1::find<std::__1::__wrap_iter<customer *>,
std::__1::basic_string<char> >' requested here
if (find (custlist.begin(), custlist.end(), query) !=custlist.end()){
^
1 error generated.
Any help appreciated! Thanks.