Как читать из текстового файла и поместить его в карту? C ++ - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть текстовый файл, который я хочу прочитать, а затем поместить его в карту. Прямо сейчас я написал это, но я знаю, что это не правильно.

   #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

, поэтому имя Элемент длинный, и я хочу сохранить его как ключ, когда я читаю его из файла. Если бы это было только одно имя, например, «картошка» или «помидор», тогда было бы немного проще, но так как имя длинное, цена двойная, а сумма целая, я не знаю, как ее сохранить на карте. , Любые предложения будут полезны, и если у вас есть какие-либо предложения о том, как я мог бы реализовать это лучше в моем коде или улучшить мой код в целом, это было бы очень полезно. Спасибо

...