0

ユーザー入力でベクトルの名前を定義できるようにしながら、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;
}
4

3 に答える 3

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;
}
于 2010-05-02T20:57:04.873 に答える
3

ユーザーに名前を付けてもらい、それを物事のベクトルに関連付けることができるようにしたいですか? これが a のstd::map目的であり、 astd::stringをキー タイプとして、 astd::vectorをペイロード タイプとして使用します。

于 2010-05-02T20:57:34.580 に答える
2

変数の名前をユーザーから読み取らせたいということですか? そんなことはできませんし、そうする理由もありません。変数名は、プログラマの便宜のためにのみ存在します。必要でない限り、実行可能ファイルには存在しません

于 2010-05-02T20:51:39.287 に答える