在main函数中使用类中的数组

时间:2017-02-16 10:25:09

标签: c++

请考虑以下代码:

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

1 个答案:

答案 0 :(得分:3)

char name[100];表示您最多可以保存100个char类型的项目,而不是100个字符串。

这里的一个重要影响是你的输入是缓冲的。 std::cin >> item.name[i];从输入缓冲区中获取一个char并将其写入name[i]。其余输入保留在缓冲区中,将用于下一次执行cin,即下一次执行相同的代码行。

所以如果你输入例如&#39; ABC&#39;它可以节省一个&#39;到item.name[0],&#39; b&#39;到item.name[1]和&#39; c&#39;到item.name[2]。对于item.name[3],输入缓冲区为空,因此等待下一次输入。