2010-05-02 3 views
0

Как вы объявляете вектор в C++, позволяя пользователю вводить имя вектора? Хорошо, рассмотрев ваши ответы, более подробно; Вот сообщение об ошибке из консольного приложения VS08 C++ -C++ User-Defined Vector

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; 
} 
+4

У вас нет. Имена переменных не имеют никакого отношения к времени выполнения. Что ты пытаешься сделать? – GManNickG

+0

@Berlioz, отредактировал мой ответ в ответ на ваши изменения. – Stephen

ответ

3

Вы хотите, чтобы пользователи дали вам имя и уметь ассоциировать это с вектором вещей? Вот что такое std::map, с std::string в качестве типа ключа и std::vector в качестве типа полезной нагрузки.

2

Вы имеете в виду вы хотите имя переменной для чтения от пользователя? Вы не можете этого сделать, и на самом деле нет причины; имена переменных существуют только для удобства программиста; они даже не существуют в исполняемом файле, если это необходимо

5

Что вы действительно пытаетесь сделать?

Как правило, пользователи не заботятся об именах переменных. То, что вы можете сделать, это хранить различные векторы с разными ключами, определенного пользователем:

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^