2017-02-16 7 views
1

は、次のコードを考えてみましょう:メイン関数でクラスから配列を使用して

#include <iostream> 
#include <string> 
#include <algorithm> 

int main() 
{ 
    class treasure 
    { 
    public: 
     char name[100]; 
     double value[100]; 
     double weight[100]; 
    }; 

    int itemNumber, totalWeight, i; 

    treasure item; 

    std::cout << "Enter total item weight: " << std::endl; 
    std::cin >> totalWeight; 
    std::cout << "Enter total item number: " << std::endl; 
    std::cin >> itemNumber; 
    for(i = 0; i < itemNumber; i++) 
    { 
     std::cout << "Enter item name: " << std::endl; 
     std::cin >> item.name[i]; 
    } 

    return 0; 
} 

を私は配列で入力5項目に望んでいたが、それはちょうど2つの項目を求めています。最初は1つの項目を取り、3行を印刷した後にもう一度入力します。問題であると想定されるのは。何がうまくいかなかったのですか?

答えて

3

char name[100];は、100文字列ではなくcharタイプのアイテムを100個まで保存できることを意味します。

重要な効果は、入力がバッファされていることです。 std::cin >> item.name[i];charを入力バッファから取り出し、name[i]に書き込みます。残りの入力はバッファに残り、次の実行のために使用されます。cin、つまり同じコード行が次に実行されます。

'abc'は 'a'をitem.name[0]に、 'b'をitem.name[1]に、 'c'をitem.name[2]にそれぞれ保存します。 item.name[3]の場合、入力バッファは空ですので、次の入力を待ちます。

+0

感謝の男:Dはちょうど新しい何かを学んだ。 –

関連する問題