簡體   English   中英

C ++用戶定義的向量

[英]C++ User-Defined Vector

在允許用戶輸入定義矢量名稱的同時,如何在c ++中聲明矢量? 好吧,查看您的回答后,這里有更多詳細信息; 這是來自VS08 C ++控制台應用程序的錯誤消息-

Error 2 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'std::istream' to 'char *' e:\c++\project 5\project 5\project 5.cpp 58 project 5

這是代碼:

void addRecord()
{
     vector<char>recordName;
     vector<inventory>recordNameUser;
     cout << "Name the record you want to store it as\n";
     cin.get(cin, recordName);
     cout << "Enter the item description\n";
     cin.get(cin, recordNameUser.itemDescription);
     cout << "Enter the quanity on hand\n";
     cin >> recordNameUser.quanityOnHand;
     cout << "Enter the wholesale cost\n";
     cin >> recordNameUser.wholesaleCost;
     cout << "Enter the retail cost\n";
     cin >> recordNameUser.retailCost;
     cout << "Enter the date of the inventory (mm/dd/yyyy)\n";
     cin >> recordNameUser.inventoryDate;
}

您到底想做什么?

通常,用戶不關心變量名。 可以做的是使用不同的用戶定義鍵存儲不同的向量:

map<string, vector<int> > user_vectors;
while (true) {
  string key = GetNameFromUserInput();
  int value = GetValueFromUserInput();
  user_vectors[key].push_back(value);
}

根據已編輯的問題描述,您實際上根本不需要向量。

map<string, inventory> inventory_map;
while (!done) {
  string item_name;
  cin >> item_name;
  inventory item;
  cin >> item.itemDescription;
  cin >> item.quantityOnHand;
  ...;
  inventory_map[item_name] = item;
}
for (map<string, inventory>::const_iterator it = inventory_map.begin();
     it != inventory_map.end(); ++it) {
   cout << "Inventory contains: " << it->first
        << " described as: " << it->second.description;
}

您想讓用戶給您起一個名字,然后將其與事物向量相關聯嗎? 這就是std::map目的,其中std::string是鍵類型,而std::vector是有效負載類型。

您是說要從用戶那里讀取變量的名稱? 您無法做到這一點,並且沒有真正的理由。 變量名僅是為了程序員的方便而存在; 除非必要,否則它們甚至不存在於可執行文件中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM