2017-02-16 43 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项在数组中,但它只是要求两个项目。它首先需要一个项目,然后在打印三行后再次输入另一个项目。什么似乎是问题。出了什么问题?

回答

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刚刚学到了一些新东西。 –