Итак, у меня есть текстовый файл, который я хочу прочитать, а затем поместить его в карту. Прямо сейчас я написал это, но я знаю, что это не правильно.
#include "headers.h"
void SearchItem(string itemName);
void SearchItem(double price);
void SearchItem(int amount);
void sort();
struct ItemInfo{
double Itemprice = 0;
int Itemamount = 0;
};
struct storeName{
string StoreName;
map<string, ItemInfo> storeItem;
};
class inventory
{
public:
//constructor to read frmo file
inventory();
//function to add items in map
void updateInventory( int items);
//function to iterate throught the list
void iter();
//last store item entered
void viewInventory(string SName);
//get list
list<storeName> get_list();
private:
list<storeName> stores;
};
Я написал этот класс со списком типа storeName, который является структурой. Я использовал структуру, потому что я пытаюсь составить инвентарный список всех местных продуктовых магазинов в моем районе, а затем получить карту их товаров, таких как фрукты и овощи, а также их цены и количество в магазине. В списке будут храниться название магазина и карта, на карте будет храниться название товара, которое будет ключевым, а затем два значения - цена и сумма. Я также использовал структуру для карты, чтобы она могла содержать два значения, а затем в будущем я мог бы искать по имени или по ключу. В классе я использую конструктор в качестве функции чтения из файла, которая является
inventory::inventory(){
//read from file function
ifstream read;
vector<string> name;
storeName input;
ItemInfo enter;
auto iter = stores.begin();
auto mapIter = iter->storeItem.begin();
iter->StoreName = "Walmart";
read.open("/Users/vibhorsagar/Desktop/CovidProject/CovidProject/walmartList.txt");
if(!read.is_open()){
cout<<"Error"<<endl;
return;
}else {
while(!read.eof()){
string line;
double price;
int amount;
getline(read, line, ' ');
stringstream in(line);
in>>line;
name.push_back(line);
while(in>> price >> amount){
//stuck here
}
}
}
}
Теперь в текстовом файле у меня есть
Marketside Butter Lettuce Salad 2.98 200
Marketside Classic Iceberg Salad 2.64 400
, поэтому имя Элемент длинный, и я хочу сохранить его как ключ, когда я читаю его из файла. Если бы это было только одно имя, например, «картошка» или «помидор», тогда было бы немного проще, но так как имя длинное, цена двойная, а сумма целая, я не знаю, как ее сохранить на карте. , Любые предложения будут полезны, и если у вас есть какие-либо предложения о том, как я мог бы реализовать это лучше в моем коде или улучшить мой код в целом, это было бы очень полезно. Спасибо