[英]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.